记录一个使用socket库中遇到的问题,最近项目中遇到使用本地udp通信的情况,在编写程序过程中,发现调用recvfrom一直失败,返回-1,错误码10022(错误码很重要)。
排查了半个下午,终于发现原来是bind函数的问题。由于在文件开头使用了 using namespace std 导致默认的bind变成了 functional中的那个,而不是socket的bind,导致绑定一直没有成功。当然,也可能是套接字端口被占用,recvfrom直接返回-1(但运行不报错),错误码是10044和10022(放在不同地方)。解决方法就是,换一个端口。
解决方案:
- 不要在文件中用 using namespace std
- 使用 ::bind()
- 换端口
原文链接:https://blog.csdn.net/tudouttttt/article/details/108026921
本文讲述了作者在使用socket库进行本地UDP通信时,遇到recvfrom函数返回-1并伴有错误码10022的问题。问题源于`using namespace std`导致的bind函数混淆。解决方法包括避免全局命名空间、明确使用`::bind`以及更换未被占用的端口。

3027

被折叠的 条评论
为什么被折叠?



