Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何在做其他事情时监听套接字_Java_Multithreading_Sockets_Asynchronous - Fatal编程技术网

Java:如何在做其他事情时监听套接字

Java:如何在做其他事情时监听套接字,java,multithreading,sockets,asynchronous,Java,Multithreading,Sockets,Asynchronous,我开始深入了解Java,并想澄清一些关于该主题的想法/问题 在java中,在代码中执行其他活动时,有哪些选项可用于侦听端口。然后,当检测到流量时,能够执行代码 实现带有线程的服务器实例是唯一的选项吗? 或者事件处理程序可以提供类似的功能吗 尽管这在我看来是可能的,但我肯定不是: 由于java.net.Socket也可以接收消息,所以java.net.ServerSocket实例是否是必需的?或者,java.net.Socket只能从它发出的消息接收响应 感谢您在advanced中提供的帮助。如果

我开始深入了解Java,并想澄清一些关于该主题的想法/问题

在java中,在代码中执行其他活动时,有哪些选项可用于侦听端口。然后,当检测到流量时,能够执行代码

实现带有线程的服务器实例是唯一的选项吗?
或者事件处理程序可以提供类似的功能吗

尽管这在我看来是可能的,但我肯定不是: 由于
java.net.Socket
也可以接收消息,所以
java.net.ServerSocket
实例是否是必需的?或者,
java.net.Socket
只能从它发出的消息接收响应


感谢您在advanced中提供的帮助。

如果您想在端口上侦听,可以使用ServerSocket类。但要在侦听时执行其他操作,需要使用多个线程。这是因为accept()调用会一直阻塞,直到建立连接为止。

要回答您的“附带问题”,是的,您需要使用ServerSocket

但是,对于在侦听套接字的同时执行其他工作,这是一个并发性问题。您必须在后台调度一个线程来侦听该servlet。基本上,这可以通过创建一个实现
Runnable
接口的“Worker”类来实现。
public void run()
方法的代码将像通常一样侦听套接字


定义工作类后,可以创建一个线程,该线程将在后台执行套接字侦听逻辑<代码>新线程(anInstanceOfYourWorkerClass).start()将创建线程并运行工作程序逻辑。这当然是一个基本示例。

ServerSocket
是启动初始传入通信请求所必需的。
Socket
只能建立输出连接(广义而言)