繁体   English   中英

无法将TCP套接字绑定到本地IP

[英]Cannot bind TCP socket to local IP

我的服务器程序绑定精确到0.0.0.0(INADDR_ANY)或127.0.0.1(INADDR_LOOPBACK),但我希望程序在我的本地网络IP(192.168.1.24)上侦听并且我一直收到此错误:

打开侦听端口8888时出错(原始TCP输出):无法分配请求的地址

这是相关代码:

#define LOCAL_IP ((unsigned long int) 0x1801A8C8) //192.168.1.24
#define PORT 8888

struct sockaddr_in sa;

sa.sin_family = AF_INET;
sa.sin_port = htons(PORT);
sa.sin_addr.s_addr = LOCAL_IP; /* Bind servers to local net*/
//sa.sin_addr.s_addr = htonl(INADDR_ANY);

我也试过没有运气的htonl(LOCAL_IP)和inet_addr(“192.168.1.24”)。

您使用的IP是:200.168.1.24

采用:

sa.sin_addr.s_addr = inet_addr("192.168.1.24");

代替。
确保端口尚未使用。 (使用程序netstat)您是否在之前的测试中正确关闭了套接字?

您不能将任何字符串或整数分配给sa.sin_addr.s_addr

所以你需要把它变成合适的格式。 您编写的声明sa.sin_addr.s_addr = LOCAL_IP将替换为

sa.sin_addr.s_addr =192.168.1.24

这是导致问题的原因。

使用inet_addr(LOCAL_IP)代替,它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM