Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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_Sockets_Serversocket - Fatal编程技术网

Java 套接字而不是服务器套接字

Java 套接字而不是服务器套接字,java,sockets,serversocket,Java,Sockets,Serversocket,尽管ServerSocket类被设计成一般性地侦听传入连接,但我是否可以只使用套接字对象来检索java中的传入数据?如果是,那么在这样做时,我是否需要采取其他预防措施 编辑:感谢您的回答…但是尽管在UDP中只有一个套接字类--DatagramSocket,对吗?服务器套接字用于将()和accept()绑定到本地端口。尽管名称ServerSocket不是Socket,但它仅用于接收连接。完成后,您将从接受传入请求中获得一个套接字,即通信管道。我不相信你可以使用套接字来接收传入的请求,而不使用某种连

尽管ServerSocket类被设计成一般性地侦听传入连接,但我是否可以只使用套接字对象来检索java中的传入数据?如果是,那么在这样做时,我是否需要采取其他预防措施


编辑:感谢您的回答…但是尽管在UDP中只有一个套接字类--DatagramSocket,对吗?

服务器套接字用于将()和accept()绑定到本地端口。尽管名称
ServerSocket
不是
Socket
,但它仅用于接收连接。完成后,您将从接受传入请求中获得一个
套接字,即通信管道。我不相信你可以使用
套接字
来接收传入的请求,而不使用某种连接接收器,如
服务器套接字
当使用套接字时,一端必须伸出手来连接到另一端(另一端必须监听该连接)。伸出的一端通常称为客户机。正在侦听的端称为服务器

ServerSocket表示该侦听行为。一旦ServerSocket接收到连接,它将创建一个套接字。所以你实际上需要两者兼用。服务器首先设置ServerSocket,然后使用accept()等待连接。一旦连接到达,这将创建一个套接字

在某些应用程序中,服务器会一直等待更多连接,而在其他应用程序中,此时您可以解除服务器套接字的工作,只需担心套接字


不幸的是,您不能在两侧都有客户端(除非您有第三台服务器,这两台服务器都在连接)因为必须有人监听连接。

套接字无法接收传入的连接:只有ServerSocket可以这样做。

并且除了ServerSocket.accept()?对于TCP/IP,我认为没有其他方法可以用来接收传入的请求。您可以将其子类化,但底线是它始终依赖于ServerSocket接受机制。但是,尽管在UDP中只有一个套接字类——DatagramSocket,对吗?UDP是无连接的,因此没有与之相当的
socket
DatagramSocket
类似于TCP/IP中的
ServerSocket
。据我所知,一个IP地址加上一个端口号就是一个套接字(一般来说,不是从java类的角度)。那么这是否意味着DatagramSocket相当于一个既能发送又能接收数据的套接字呢?为什么要避免使用ServerSocket?只是好奇,对不起。这让我感到刺痛已经有一段时间了:)