作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个应用程序,该应用程序使用 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));
关于ios - 为什么 iOS 会阻止绑定(bind)到 UDP 端口 6785 (IN_ADDRANY)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944459/
我正在开发一个应用程序,该应用程序使用 UDP 端口 6785 来发现网络连接的数据记录器。我的应用程序尝试按如下方式调用 bind(): int socket_handle; int err
我是一名优秀的程序员,十分优秀!