我的服务器程序绑定精确到0.0.0.0(INADDR_ANY)或127.0.0.1(INADDR_LOOPBACK),但我希望程序在本地网络IP(192.168.1.24)上侦听并且我一直收到此错误:< / p>
打开侦听端口时出错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”)而没有运气。
答案 0 :(得分:2)
您使用的IP是:200.168.1.24
使用:
sa.sin_addr.s_addr = inet_addr("192.168.1.24");
代替。
确保端口尚未使用。 (使用程序netstat)您是否在之前的测试中正确关闭了套接字?
答案 1 :(得分:1)
您无法为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)
代替,它应该有用。