Jon*_*ein 5 network-programming ios
我正在开发一个使用UDP端口6785来发现网络连接数据记录器的应用程序.我的应用程序尝试调用bind(),如下所示:
  int socket_handle;
  int error = 0;
  socket_handle = socket(AF_INET, SOCK_DGRAM, 0);
  if(socket_handle < 0)
     error = errno;
  if(error == 0)
  {
     struct sockaddr_in addr;
     memset(&addr, 0, sizeof(addr));
     addr.sin_len = sizeof(addr);
     addr.sin_family = AF_INET;
     addr.sin_port = htons(6785);
     addr.sin_addr.s_addr = htonl(INADDR_ANY);
     error = bind(socket_handle, (struct sockaddr const *)&addr, sizeof(addr));
  }
从bind()返回的错误是错误49(无法分配请求的地址).这是因为与某些内部设备服务发生冲突还是由于某些未知原因而被操作系统阻止?
事实证明,如果我关闭了VPN,则不会发生故障.我必须启用VPN才能从wifi访问我们的本地网络.
在调用bind()之前尝试这个。如果端口被 TIME_WAIT 阻塞,这可以解决问题
int optval = 1;
setsockopt(socket_handle, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
| 归档时间: | 
 | 
| 查看次数: | 890 次 | 
| 最近记录: |