如何将一台服务器连接到多个客户端

时间:2012-11-22 13:57:34

标签: java swing sockets

我已经使用ip地址完成了一个服务器和一个客户端通信,但我遇到了一个服务器多次通信

s=new ServerSocket(77);
ss=s.accept();
icon.displayMessage("New message for you", "Please click here", TrayIcon.MessageType.WARNING);     
os=ss.getOutputStream();
ps=new PrintStream(os);
is=ss.getInputStream();
br=new BufferedReader(new InputStreamReader(is));
ps.println(st);
}
catch(Exception e)
{}

在客户端

 try
 {
 ss=new Socket(ip,77);

}
 catch(Exception e){
 }
 is=ss.getInputStream();
 br=new BufferedReader(new InputStreamReader(is));
 os=ss.getOutputStream();
 ps=new PrintStream(os);
 ps.println(msg+"  :   "+st1);

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

while (true){
    s=new ServerSocket(77);
    ss=s.accept();
    Thread at = new Thread(ss);
    at.start();
}

然后与客户的通信发生在'at'的运行方法中。

答案 1 :(得分:2)

你应该在一个单独的线程中运行每个会话,如下所示:

static class Session extends Thread {
    Socket s;
    Session(Socket s) {
        this.s = s;
    }
    @Override
    public void run() {
        try {
            OutputStream os = s.getOutputStream();
            // your code  
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

public static void main(String[] args) throws Exception {
    ServerSocket s = new ServerSocket(77);
    for (;;) {
        Socket ss = s.accept();
        new Session(ss).start();
    }
}

这段代码只是为了解释这个想法。