套接字而不是ServerSocket

时间:2012-09-19 12:03:14

标签: java sockets serversocket

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

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

3 个答案:

答案 0 :(得分:5)

ServerSocket用于将()和accept()绑定到本地端口。尽管名称ServerSocket不是Socket,但它仅用于接收连接。完成后,您将收到Socket来接受传入请求,即通信管道。我不相信您可以使用Socket来接收传入的请求,而无需使用某种连接接收器,例如ServerSocket

答案 1 :(得分:3)

Socket无法接收传入连接:只有ServerSocket可以执行此操作。

答案 2 :(得分:2)

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

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

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

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