以下代码来自http://digitalpbk.blogspot.com/2007/10/unix-networking-sockets-udp-transmitter.html,它在localhost上运行正常但是当我将其更改为我的ip时它会出错
bind():无法分配请求的地址
我一直在寻找解决方案几个小时,所以任何帮助都会很棒
int main(void)
{
struct sockaddr_in sin;
char msg[10000];
int ret;
int sin_length;
int s;
s = socket(AF_INET, SOCK_DGRAM, 0);
if(!s)
{
perror("socket()");
return 0;
}
sin.sin_family = AF_INET;
sin.sin_port = htons(65000);
sin.sin_addr.s_addr = inet_addr("24.212.11.211"); // ---------------- This line ----------------
if(bind(s, (struct sockaddr *)&sin, sizeof(sin)))
{
perror("bind()");
return 1;
}
do // I think the following might be a problem
{
sin_length = sizeof(sin);
ret = recvfrom(s, msg, 10000, 0, (struct sockaddr *)&sin, (socklen_t*) &sin_length);
//Waits until a message is recieved...
printf("Message[%s:%d] : %s\n",
inet_ntoa(sin.sin_addr), sin.sin_port,msg);
}
while(msg[0]!='0');
close(s);
return 0;
}
答案 0 :(得分:3)
您很可能将其更改为人们看到的IP,而不是您自己认为的IP。 (假设函数采用的参数窗口)转到开始 - >控制面板 - > (网络和互联网 - >)网络连接/更改网络适配器设置,然后右键单击您的网络适配器并选择状态,查看您应在代码中使用的IP地址。如果您不想担心这一点,您可以随时使用BIND TO ALL THE THINGS地址,0.0.0.0。