有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Java DatagramSockets,我可以将两个不同的socket连接到同一个本地端口但位于不同的本地地址上吗?

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

我有这种情况。我的电脑连接了WiFi卡和以太网电缆。Wifi和以太网都在工作,它们有两个不同的地址(“192.168.10.104”和“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) 个答案

  1. # 1 楼答案

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

    If I bind to (8000, "0.0.0.0") and then disconnect the ethernet, get a packet on port 8000, reconnect the ethernet, disconnect the WiFi, get another packet on port 8000, would I would successfully get both packets, the one where the ethernet was disconnected and also the one where the WiFi was disconnected?

    问题还不清楚。如果你的意思是wifi数据包在连接wifi和断开以太网时到达,然后以太网数据包在连接以太网和断开wifi时到达,那么是的,你应该通过连接的接口获得任何到达的数据。0.0.0.0有时被称为“所有”,但它真正的意思是“任何”