关于C++中使用socket accept错误值为10022的一个原因

来源:互联网 发布:狗牌项链淘宝 编辑:程序博客网 时间:2024/06/04 17:47

最近在写一个java和c++通信的模块,在外部建了个小程序抄抄网上代码没问题,但是移到了主工程却出错了


几经排查将目光集中在了bind函数上


因为之前抄的代码没对bind进行判断,那么就试着判断了一下,发现主工程上的bind返回值居然不是int


ok F12看一下,这个bind居然是functional.h里的一个函数,而我们要使用的bind应该是WinSock2.h里的


稍微摸索了一下,将bind写法改为如下,成功,accept不再报错了

int r = _WINSOCK2API_::bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));if (r == SOCKET_ERROR){printf("bind() failed: %d\n", WSAGetLastError());return 1;}
实不相瞒,这个问题难了我大半天,好在最后解决了,希望能帮助碰到同样问题的小伙伴吧!

原创粉丝点击