开发者

Can't assign requested address, C++ UDP sockets

开发者 https://www.devze.com 2023-04-04 17:07 出处:网络
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

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消