C++ 通过TCP连接到Wi-Fi上的0.0.0.0,而监听器PC具有活动Wi-Fi,以太网不';行不通

C++ 通过TCP连接到Wi-Fi上的0.0.0.0,而监听器PC具有活动Wi-Fi,以太网不';行不通,c++,networking,tcp,udp,C++,Networking,Tcp,Udp,我正在创建从Wi-Fi设备到正在侦听端口0.0.0.0:44440的计算机的TCP连接 当我只使用Wi-Fi时,设备可以毫无问题地连接。当我启用/插入以太网时,侦听器从不接受设备的连接请求。(在此过程中,Wi-Fi仍处于连接状态。由ipconfig检查) 我使用C++,命令看起来像:< /P> handle=(int)接受(监听套接字->句柄,(struct sockaddr*)和地址,&addrlen) 如果两个设备都仅在Wi-Fi上,则当设备连接时,该命令将获得句柄,但如果侦听器同时在以太网

我正在创建从Wi-Fi设备到正在侦听端口0.0.0.0:44440的计算机的TCP连接

当我只使用Wi-Fi时,设备可以毫无问题地连接。当我启用/插入以太网时,侦听器从不接受设备的连接请求。(在此过程中,Wi-Fi仍处于连接状态。由ipconfig检查)

我使用C++,命令看起来像:< /P>

handle=(int)接受(监听套接字->句柄,(struct sockaddr*)和地址,&addrlen)

如果两个设备都仅在Wi-Fi上,则当设备连接时,该命令将获得句柄,但如果侦听器同时在以太网和Wi-Fi上,则该命令将继续阻塞

0.0.0.0应该是接口不明确的,因此它应该接受来自以太网(192.168.x.x)和Wi-Fi(10.161.x.x)的连接,但它似乎“连接”到提供最佳互联网的接口。使用“netstat-an”进行检查时,在0.0.0.0:44440上使用每个方法都有一个活动侦听器

任何人都是网络专家,知道为什么有多个运行的界面会弄糟这件事吗

额外信息

我做了很多检查,以确保Wi-Fi和以太网已启用。我在两个接口上运行UDP广播,告诉设备连接到本地计算机。因此,对于运行在本地网络上的设备,广播包含“192.168.x.x:44440”消息;对于运行在Wi-Fi上的设备,广播包含“10.161.x.x:44440”消息。设备接收到此消息,然后尝试在“10.161.x.x:44440”上形成TCP连接。当计算机仅通过Wi-Fi连接时,这样的连接可以工作。当通过这两个端口连接时,在端口44440上运行的侦听器永远不会检测到设备何时连接。它仍将从任一IP连接在同一台机器上运行的本地程序


另外请注意,我的以太网与我的Wi-Fi网络不同(出于安全原因)。因此,每个网络都有单独的属性

当我连接以太网时,它会将我的Wi-Fi重置为公共Wi-Fi而不是专用Wi-Fi。这不允许TCP连接,因为共享现在已禁用。虽然它允许UDP连接,这对我来说很有趣。因此,如果您遇到这种情况,请确保您的Wi-Fi已打开网络共享

这并没有弄糟。多主导航已经工作了近40年。失败的客户端是否收到错误?如果是什么?@user207421侦听器从未收到错误,因为它从未检测到通信。设备将此视为错误:“无法建立连接,因为目标计算机主动拒绝了它。”如果没有服务器正在运行,则通常会出现此错误。仅需再次测试,它将获得“SocketException System.Net.Sockets.SocketException(0x80004005):连接超时”,因此发生了一些更改。连接被拒绝意味着端口没有侦听任何内容。超时意味着目标根本没有响应。注意:您没有连接到0.0.0。。目标正在侦听0.0.0.0,这只意味着所有接口,但连接时提供的IP地址需要0.0.0.0。