使用Java DatagramSockets,我可以将两个不同的套接字连接到同一本地端口但是在不同的本地地址上吗?

时间:2015-06-06 06:08:34

标签: java sockets udp

使用Java DatagramSockets,我可以将两个不同的套接字连接到同一个本地端口但是连接到两个不同的本地地址吗?

我有这种情况。我的电脑有一个WiFi卡和一个以太网电缆连接。 Wifi和以太网都工作,它们有两个不同的地址(" 192.168.10.104"和#34; 192.168.10.108")。当我创建一对DatagramSocket时,我会这样做:

final String wiFiCardAddressName = "192.168.10.104";
final String ethernetAddressName = "192.168.10.108";
final InetAddress wiFiCardAddress = InetAddress.getByName(wiFiCardAddressName);
final InetAddress ethernetAddress = InetAddress.getByName(ethernetAddressName)
DatagramSocket datagramSocket1 = DatagramSocket(8000, wiFiCardAddress);
DatagramSocket datagramSocket2 = DatagramSocket(8000, ethernetAddress);
// ...

这会有用吗?一个套接字的所有数据包是否都通过WiFi而另一个套接字的所有数据包都通过以太网?为什么或者为什么不?

1 个答案:

答案 0 :(得分:0)

是的,只要两个地址都不是0.0.0.0。

  

如果我绑定到(8000," 0.0.0.0")然后断开以太网连接,请在端口8000上获取数据包,重新连接以太网,断开WiFi,在端口8000上获取另一个数据包,我会成功获得两个数据包,即以太网断开连接的数据包以及WiFi断开连接的数据包吗?

问题不明确。如果你的意思是在连接wifi并且以太网断开连接时wifi数据包到达,然后在以太网连接且wifi断开连接时到达以太网数据包,那么是的,你应该通过连接接口获得任何到达的数据。 0.0.0.0有时被称为' all',但它实际上意味着'任何'。