我开始深入研究Java,并希望澄清一些关于这个主题的想法/问题。
在java中,在代码中执行其他活动时,可以使用哪些选项来侦听端口。然后能够在检测到流量时执行代码。
使用线程实现一个服务器实例是唯一的选择吗? 或者事件处理程序可以提供类似的功能吗?
即使这似乎对我有用,但我确信它不是:
是否java.net.ServerSocket
实例甚至是必需的,因为java.net.Socket
也可以接收消息?或者java.net.Socket
只能从收到的邮件中收到回复。
感谢您提供任何帮助。
答案 0 :(得分:1)
ServerSocket是要在端口上侦听时使用的类。但是在听时要做其他事情需要你使用多个线程。这是因为accept()调用会阻塞,直到建立连接。
答案 1 :(得分:1)
要回答你的'问题',是的,你会想要使用ServerSocket。
然而,为了在听取套接字的同时做其他工作,这是一个并发问题。您必须在后台调度一个将侦听该servlet的线程。在基本层面上,这可以通过创建实现Runnable
接口的“Worker”类来实现。 public void run()
方法将拥有像通常那样侦听套接字的代码。
一旦定义了一个worker类,就可以创建一个在后台执行套接字监听逻辑的线程。 new Thread(anInstanceOfYourWorkerClass).start();
将创建您的线程并运行您的工作逻辑。这当然是一个基本的例子。