VS2015 使用SOCKET遇到的问题
**
最近需要用VS2015写一个UDP服务器,很简单的小例子,写完运行报错,socket和bind函数都没成功。。。
1.socket创建失败
socket返回值一直是INVALID_SOCKET,我的是因为socket没有初始化的问题
WSADATA wsaData;
WORD sockVer = MAKEWORD(2, 2);
WSAStartup(sockVer, &wsaData);
在socket之前初始化,之后socket就创建成功了。
2.bind失败
bind的失败,原本是想用返回值去看看是怎么回事,但是接返回值的时候一直报错说类型不匹配,然后又仔细瞧了瞧写的函数,确定没错,然后进入bind函数
是个这么个玩意,我一看这不对啊,然后去网上找原因,原来Windows里有一个std::bind函数和socket的函数冲突了,std::bind用于绑定函数,并且可以动态的传递参数。如果使用了using namespace std;
就会默认调用的是std::bind函数。。。只要去掉using namespace std
就行了,或者使用作用域也行。
****注:**如果有打不开源文件的时候,看看源文件是否适用Windows环境,Windows环境和Linux环境有差异。