多线程server

本文介绍了使用Java编写的ThreadedEchoServer,通过ServerSocket处理客户端连接,实现每个新连接启动一个独立的线程进行数据回显。核心代码展示了如何创建服务器监听、接受连接并处理客户端消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ThreadedEchoServer {
    public static void main(String[] args) {
        try {
            int i=1;
            ServerSocket s = new ServerSocket(8189) ;
            while (true)
            {
                Socket incoming=s.accept();
                System.out.println("Spawning"+i);
                Runnable r=new ThreadedEchoHandler(incoming);
                Thread t = new Thread(r);
                t.start();
                i++;
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

class ThreadedEchoHandler implements Runnable{
    private Socket incoming;

    public ThreadedEchoHandler(Socket i){
        incoming=i;
    }

    public void run() {
        try {
            try {
                InputStream inStream = incoming.getInputStream();
                OutputStream outStream = incoming.getOutputStream();

                Scanner in = new Scanner(inStream);
                PrintWriter out = new PrintWriter(outStream,true /*autoFlush*/);

                out.println("Hello! Enter BYE to exit.");
                boolean done = false;
                while (!done&&in.hasNextLine())
                {
                    String line = in.nextLine();
                    out.println("Echo: "+ line);
                    if (line.trim().equals("BYE"))
                        done=true;
                }
            }
            finally
            {
                incoming.close();
            }
        }catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值