我已经使用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);
答案 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();
}
}
这段代码只是为了解释这个想法。