我设置了一个简单的服务器和客户端,服务器等待客户端发送内容,然后发送响应。但缺点是两者都必须监听套接字才能接收数据。如果我希望它的沟通更加灵活怎么办?我正在考虑基于事件的东西,所以每次套接字收到一些东西时,它都会调用一个方法来处理它,而不是暂停程序来等待 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() 中,我向客户端发送响应。
最佳答案
如果您希望基于事件,让客户端在服务器发送数据包时执行某些操作,则可以使用多线程。
Thread t = new Thread(new Runnable() {
public void run() {
someMethod(in.nextLine());
}
});
t.start();
您必须在封闭类中创建in
字段。
这将导致您的程序执行,当它收到数据包时,它将调用 someMethod()
。
当然,这会带来许多与多线程相关的问题,但这确实是实现您想做的事情的唯一方法。
关于java - 基于事件的网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996083/