Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试绑定时出现winsock错误10049_C++_Sockets_Tcp - Fatal编程技术网

C++ 尝试绑定时出现winsock错误10049

C++ 尝试绑定时出现winsock错误10049,c++,sockets,tcp,C++,Sockets,Tcp,我的服务器连接有问题。当我尝试将服务器绑定到外部设备IP时,出现winsock错误:10049无法分配请求的地址。使用localhost服务器可以正常工作。 此IP地址:192.168.0.202 ping成功。 我在win8.1上工作。我关闭了防火墙和windows defender,但没有任何帮助 具有服务器实现的代码取自 有什么想法吗?绑定函数用于指定服务器系统的哪个地址用于接受来自远程客户端的连接,而不是指定允许哪个远程客户端连接到服务器。绑定函数只能用于对服务器本身有效的地址,而不能用

我的服务器连接有问题。当我尝试将服务器绑定到外部设备IP时,出现winsock错误:10049无法分配请求的地址。使用localhost服务器可以正常工作。 此IP地址:192.168.0.202 ping成功。 我在win8.1上工作。我关闭了防火墙和windows defender,但没有任何帮助

具有服务器实现的代码取自

有什么想法吗?

绑定函数用于指定服务器系统的哪个地址用于接受来自远程客户端的连接,而不是指定允许哪个远程客户端连接到服务器。绑定函数只能用于对服务器本身有效的地址,而不能用于远程设备或主机的地址

为了限制允许哪个远程主机连接到您的服务器,您需要接受连接并在此时验证远程地址。如果地址不正确,则连接将关闭

通常,您希望使用INADDR_ANY,除非您的服务器是多主机的多个物理连接到多个网络,只有当您试图限制连接到服务器所连接的其中一个网络时,才能使用绑定功能。

绑定功能用于指定服务器系统的哪个地址用于接受来自远程客户端的连接,而不是指定允许哪个远程客户端连接到服务器。绑定函数只能用于对服务器本身有效的地址,而不能用于远程设备或主机的地址

为了限制允许哪个远程主机连接到您的服务器,您需要接受连接并在此时验证远程地址。如果地址不正确,则连接将关闭


通常,您希望使用INADDR_ANY,除非您的服务器是多主机的多个物理连接到多个网络,只有当您试图限制连接到服务器所连接的其中一个网络时,才可以使用此选项。

每当应用程序尝试绑定到无效的ip地址时,Winsock会通过其API WSAGetLastError返回错误标志10049 WSAEADDRNOTAVAIL

绑定到特定IP地址意味着,无论何时运行程序服务器,该地址都应有效可用,但每次断开/连接适配器时,DHCP都会提供动态IP地址,因此您上次绑定服务器的地址无效,请打开cmd并输入:

ipconfig
您将获得ip4/ip6地址列表,然后您可以选择其中一个并将服务器绑定到,但是这种方法非常枯燥,因此替代方法是绑定到INADR_ANY,这样您就可以让系统为您完成任务


您只需从客户端输入服务器地址和端口并进行连接。

每当应用程序尝试绑定到无效ip地址时,Winsock都会通过其API WSAGetLastError返回错误标志10049 WSAEADDRNOTAVAIL

绑定到特定IP地址意味着,无论何时运行程序服务器,该地址都应有效可用,但每次断开/连接适配器时,DHCP都会提供动态IP地址,因此您上次绑定服务器的地址无效,请打开cmd并输入:

ipconfig
您将获得ip4/ip6地址列表,然后您可以选择其中一个并将服务器绑定到,但是这种方法非常枯燥,因此替代方法是绑定到INADR_ANY,这样您就可以让系统为您完成任务


您只需从客户端输入服务器地址和端口即可进行连接。

此处没有连接步骤。这是一台服务器。它约束并接受。不清楚您在问什么。您绑定到INADDR_ANY vs 192.168.0.202的条件语句与您认为的不一样。一般来说,您应该始终绑定到Inadr_ANY。如果您试图将连接限制在IP地址范围内,您需要在接受呼叫后处理该问题,或者使用防火墙规则阻止不需要的连接。@EPJ它没有绑定。无法将地址绑定到侦听套接字时出错。Winsock错误:10049所以请更正您的帖子,包括您的标题。@Paulina您不能将套接字绑定到外部地址,只能绑定到本地计算机上的地址。如果您有一个外部IP,这意味着您有一个NAT路由器,这意味着您需要启用端口转发以将外部流量从NAT传递到您的服务器。这里没有连接步骤。这是一台服务器。它约束并接受。不清楚您在问什么。您绑定到INADDR_ANY vs 192.168.0.202的条件语句与您认为的不一样。一般来说,您应该始终绑定到Inadr_ANY。如果您试图将连接限制在IP地址范围内,您需要在接受呼叫后处理该问题,或者使用防火墙规则阻止不需要的连接。@EPJ它没有绑定。我遇到一个错误,无法绑定
地址到我们的侦听套接字。Winsock错误:10049所以请更正您的帖子,包括您的标题。@Paulina您不能将套接字绑定到外部地址,只能绑定到本地计算机上的地址。如果您有一个外部IP,这意味着您有一个NAT路由器,这意味着您需要启用端口转发以将外部流量从NAT传递到您的服务器。@Paulina您在侦听呼叫中收到了相同的错误?不,对不起,我的错误。仍然绑定函数错误;我已经编辑了代码。如果我只想连接到这个外部主机IP怎么办?@Paulina接受连接并验证远程地址。如果不匹配,请关闭套接字并等待下一个连接。@Paulina您在侦听呼叫中收到相同的错误?不,对不起,我的错误。仍然绑定函数错误;我已经编辑了代码。如果我只想连接到这个外部主机IP怎么办?@Paulina接受连接并验证远程地址。如果不匹配,请关闭套接字并等待下一次连接。