2

虽然 ServerSocket 类被设计为一般监听传入的连接,但我可以只使用 Socket 对象并在 java 中检索传入的数据吗?如果是,那么我是否需要采取任何额外的预防措施?

编辑:感谢您的回答......但是虽然在 UDP 中只有一个套接字类——DatagramSocket 对吗?

4

3 回答 3

5

ServerSocket用于绑定()和接受()到本地端口。尽管名称,ServerSocket不是一个Socket,它只用于接收连接。完成后,您会Socket从接受传入请求中获得一个,这是一个通信管道。我不相信您可以在Socket不使用某种连接接收器(例如ServerSocket.

于 2012-09-19T12:07:10.723 回答
3

Socket 不能接收传入的连接:只有 ServerSocket 可以做到这一点。

于 2012-09-19T12:08:52.080 回答
2

使用套接字时,一端必须伸出并连接到另一端(并且另一端必须监听该连接)。伸出的一端通常称为客户。正在侦听的一端称为服务器。

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

在某些应用程序中,服务器一直在等待更多连接,而在其他应用程序中,您可以在此时停用 ServerSocket,而只需担心 Socket。

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

于 2012-09-19T12:07:41.723 回答