socket如何确定bind成功/或者说如何检测端口是否占用

zhousitiaoda 2016-06-30 08:03:37
问题描述:A.exe已经监听了某个端口,B.exe再调用bind去监听,居然返回0(表示成功),但收不到任何连接请求,猜测都连接到A那去了。
问:有没有方法可以判断bind真正成功了。或者说给定一个端口,能否判断当前是否已经占用

最搓的方法是看是否能connect成功,虽然比较准确,但太搓了。。
...全文
711 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2016-07-19
  • 打赏
  • 举报
回复
用API可以用 GetTcpTable GetTcp6Table GetUdpTable GetUdp6Table 不过个人感觉 可能 先 connect 测试一下 也是不错的选择, 至少很简单
shenyi0106 2016-07-19
  • 打赏
  • 举报
回复
为啥不判断返回值,有返回值结合GetLastError就可以解决了
Eleven 2016-07-19
  • 打赏
  • 举报
回复
oyljerry 2016-07-19
  • 打赏
  • 举报
回复
基本上就是根据返回的错误码来判断。
xian_wwq 2016-07-01
  • 打赏
  • 举报
回复
思路差不多,也是再bind一次端口,看是否成功
zhousitiaoda 2016-06-30
  • 打赏
  • 举报
回复 1
A进程占用端口,B进程bind却成功,大概找到原因了,估计是A进程使用了SO_REUSEADDR,这种情况下只要在B进程bind前设置SO_EXCLUSIVEADDRUSE属性,再bind就会失败,错误码是端口占用。 虽然问题看似解决了,但还是想请教下大家有什么方法判断

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧