Socket&的区别如果InetSocketAddress?

时间:2015-09-02 15:55:12

标签: java sockets

我搜索了很多,但我无法找到两者之间的直接差异。在创建客户端套接字时,我们何时使用每个?

4 个答案:

答案 0 :(得分:3)

InetSocketAddress无法以任何方式管理套接字。

我认为您的意思是Socket vs DatagramSocket

Socket用于通过TCP进行通信(可靠)。

DatagramSocket用于通过UDP进行通信的连接(不可靠)。

或者,如果你指的是SocketAddress vs InetSocketAddress

SocketAddress只是没有协议的套接字地址的抽象实现。

对于IP,

InetSocketAddressSocketAddress的实施。

答案 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套接字。

参考文献摘自 https://softwareengineering.stackexchange.com/questions/231150/whats-the-difference-between-socketaddress-and-serversocket-in-java

答案 2 :(得分:1)

来自Socket

的Javadoc
  

此类实现客户端套接字(也称为"套接字")。套接字是两台机器之间通信的端点。

InetSocketAddress

  

此类实现IP套接字地址(IP地址+端口号)

地址就像你家的位置,Socket是通往那所房子的道路。

答案 3 :(得分:1)

SocketAddress 是一个抽象类,可以告诉Java在联系服务器时可以连接到哪里,并且它允许套接字在建立连接后识别远程服务器/客户端。

InetSocketAddress 是一个特殊的SocketAddress,旨在表示标准的TCP协议地址,因此它具有设置/查询连接的远程端的主机名,IP地址和套接字的方法(或者,实际上也是当地的一方)。