我搜索了很多,但我无法找到两者之间的直接差异。在创建客户端套接字时,我们何时使用每个?
答案 0 :(得分:3)
InetSocketAddress
无法以任何方式管理套接字。
我认为您的意思是Socket
vs DatagramSocket
。
Socket
用于通过TCP进行通信(可靠)。
DatagramSocket
用于通过UDP进行通信的连接(不可靠)。
或者,如果你指的是SocketAddress
vs InetSocketAddress
:
SocketAddress
只是没有协议的套接字地址的抽象实现。
InetSocketAddress
是SocketAddress
的实施。
答案 1 :(得分:3)
一切都在名称中...典型的网络套接字是两台机器上两个端口之间的连接。
ServerSocket是等待客户端连接到它的那个....它会绑定'到一个港口,它听了'对于连接,当它们发生时,它接受'连接。接受连接的结果是Java Socket。连接的客户端(如果它也是Java)也具有Java Socket。你现在有两个插座相互连接。
Socket如上所述。
现在,地址是有关如何查找/识别Socket连接的远程端的详细信息。
SocketAddress是一个抽象类,可以告诉Java在联系服务器时可以在哪里连接,并且它允许套接字在建立连接后识别远程服务器/客户端。
InetSocketAddress是一个特殊的SocketAddress,旨在表示标准的TCP协议地址,因此它有方法来设置/查询连接的远程端的主机名,IP地址和Socket(或者实际上是本地的)一边也是。)
因此,(Inet)套接字地址用于建立Socket连接......
要点:
ServerSocket是一个等待建立套接字连接的侦听器。 套接字是两个系统之间的通信通道(一个是服务器,另一个是客户端)。 SocketAddress是一个标识地址的抽象类 InetSocketAddress是一个特定于TCP协议的类,包括IP地址/主机名和端口号。这用于建立Internet / TCPIP套接字。
答案 2 :(得分:1)
来自Socket
的Javadoc此类实现客户端套接字(也称为"套接字")。套接字是两台机器之间通信的端点。
此类实现IP套接字地址(IP地址+端口号)
地址就像你家的位置,Socket是通往那所房子的道路。
答案 3 :(得分:1)
SocketAddress 是一个抽象类,可以告诉Java在联系服务器时可以连接到哪里,并且它允许套接字在建立连接后识别远程服务器/客户端。
InetSocketAddress 是一个特殊的SocketAddress,旨在表示标准的TCP协议地址,因此它具有设置/查询连接的远程端的主机名,IP地址和套接字的方法(或者,实际上也是当地的一方)。