Java Socket
类有两个方法isClosed
和isConnected
来检查套接字是分别关闭还是连接。我想知道一个只打开的TCP套接字和一个打开并连接的TCP套接字有什么区别,这与UDP有什么不同。
答案 0 :(得分:8)
简单地说, open 的Socket
是一个等待连接或已成功与另一个Socket
连接的套接字。当套接字关闭时,意味着此套接字不再可用于连接,并且它的资源已被释放。连接的Socket
,这意味着套接字连接到另一个Socket
。
所以Socket
可以......
<强>更新强>
来自@Bryan
显然,TCP套接字有半封闭或半开状态;哪个用法(今天)与其原始含义不同。有关link的更多信息。
答案 1 :(得分:7)
此页面提供了有关套接字状态的相当好的概述:http://diranieh.com/SOCKETS/SocketStates.htm以及TCP和UDP套接字之间的区别。特别:
请注意,较新的java.net.DatagramSocket实现支持TCP / IP网络状态的扩展:DatagramSocket也可以处于“已连接”状态,因此即使数据报,isConnected()也不一定返回false套接字永远不会在网络层“连接”。特别是:“当DatagramSocket连接到远程地址时,数据包只能发送到该地址或从该地址接收。默认情况下,数据报套接字未连接。”