多个客户端连接socket

import java.io.DataInputStream;  
import java.io.DataOutputStream;  
import java.io.IOException;  
import java.net.ServerSocket;  
import java.net.Socket;  
  
/** 
 * 服务器返回用户输入的信息, 为多个用户提供服务:为每个客户分配一个工作线程 
 */  
public class ChatServers {  
    private int port = 8189;// 默认服务器端口  
  
    public ChatServers() {  
    }  
  
    // 创建指定端口的服务器  
    public ChatServers(int port) {  
        this.port = port;  
    }  
  
    public void service() {  
       
        try {  
            // 建立服务器连接,设定客户连接请求队列的长度  
            ServerSocket server = new ServerSocket(port,3);  
            while (true) {  
                // 等待客户连接  
                Socket socket = server.accept();  
            socket.setSoTimeout(15000);         
                new Thread(new ServerThread(socket)).start();  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
  
    public static void main(String[] args) {  
        new ChatServers().service();  
    }  
}  
  
class ServerThread implements Runnable {  
    private Socket socket;  
  
    public ServerThread(Socket socket) {  
        this.socket = socket;  
    }  
  
    // 任务是为一个用户提供服务  
    @Override  
    public void run() {  
        try {  
            try {  
                // 读取客户端传过来信息的DataInputStream  
                DataInputStream in = new DataInputStream(socket  
                        .getInputStream());  
                // 向客户端发送信息的DataOutputStream  
                DataOutputStream out = new DataOutputStream(socket  
                        .getOutputStream());  
                while (true) {  
                    // 读取来自客户端的信息  
                    String accpet = in.readUTF();  
                    out.writeUTF("服务器:" + accpet);  
                }  
            } finally {// 建立连接失败的话不会执行socket.close();  
                socket.close();  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  

  

posted @ 2017-01-20 17:03  削肾客  阅读(1208)  评论(0编辑  收藏  举报