【发布时间】:2021-07-05 14:00:32
【问题描述】:
我正在开发一个使用数据报套接字进行通信的应用程序。我遇到了一个奇怪的问题,即应用程序的第一次运行总是在与Cannot assign requested address 绑定的第一个套接字上失败,但第二次运行应用程序时一切正常。
我已经检查了bind() 的参数是否正确。在我设置套接字之前,我正在使用ioctl() 调用配置接口的 IP 地址并将其设置并运行。
我想详细了解他无法绑定套接字的原因。是否有一些我可以检查的日志文件或其他东西?感谢您的建议!
【问题讨论】:
-
也许套接字已经在使用中,需要由操作系统释放才能在新的
bind()中使用?类似的事情发生在我身上,但只是在我的程序崩溃并且没有自行清理资源之后。你也可以发一个minimal reproducible example吗? -
@rdxdk 非常感谢您的建议。我认为它与已在使用的套接字无关。即使在重新启动树莓派后也会出现问题。我认为它必须与
bind()发生时未 100% 配置接口有关。可能ioctl()电话需要一些时间。
标签: c sockets udp bind raspbian