The following code is from http://digitalpbk.blogspot.com/2007/10/unix-networking-sockets-udp-transmitter.html, It runs fine on localhost but when I change it to my ip it gives the error
bind(): Can't assign requested address
I have been searching for a solution for a few hours so any help would be great
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;
}
Most likely you're changing it to the IP that people see you as, not the IP you see yourself as. (Assuming windows from the parameters the functions take) Go to start -> control panel -> (Network & Internet ->) network connection/change network adapter settings and then right click on your network adapter and select status, look at IP address, that is the one you should be using in your code. If you don't want to worry about that, you can always use the BIND TO ALL THE THINGS address, 0.0.0.0.
精彩评论