我已经设置了一个简单的服务器和客户端,服务器等待客户端发送内容然后发送响应。但缺点是两者都必须监听套接字才能收到东西。如果我希望它在通信中更灵活怎么办?我在思考基于事件的事情,所以每次套接字收到的东西都调用一个方法来处理它,而不是暂停程序等待socket.nextLine()。
这是我的服务器代码:
try{
ss = new ServerSocket(port);
s = ss.accept();
in = new Scanner(s.getInputStream());
out = new PrintWriter(s.getOutputStream(), true);
while(!s.isClosed()){
String input = in.nextLine();
handleInput(input);
}
} catch (Exception e){}
在handleInput()中,我向客户端发送响应。
答案 0 :(得分:0)
如果你想在服务器发送数据包时做客户端的事件,那么多线程。
Thread t = new Thread(new Runnable() {
public void run() {
someMethod(in.nextLine());
}
});
t.start();
您必须在附带的课程中填写in
字段。
这将导致您的程序执行,当它收到数据包时,它会调用someMethod()
。
当然,这会解决与多线程相关的众多问题,但它确实是实现您想要的唯一方法。