本文总结了在开始使用windows socket编程时犯的错误,以备查阅:
编译环境:VS2010
项目类型:VC++,Win32项目
1. 头文件包含<WinSock2.h>,需要放在<windows.h>后面,否则会提示如下类似错误:
error C3861: “WSAStartup”: 找不到标识符
2. 必须包含ws2_32.lib库函数,否则会提示如下错误:
error LNK2019: 无法解析的外部符号__imp__WSAStartup@8,
库函数的添加方法:
a. 在代码里使用:#pragma comment(lib,"ws2_32.lib")
同样,必须放在 <windows.h> 头文件后面
b. 在项目属性里设置:
项目属性->配置属性->链接器->输入->附加依赖项
增加ws2_32.lib
3. 防止笔误,一个笔误导致查了好长时间,错误代码如下:
if(connect(clientSocket,(sockaddr*)&sock,sizeof(sockaddr_in) ==SOCKET_ERROR))
编译链接都是正确的,就是connect返回错误代码
查了好一会才看到括弧放错位置了应该如下:
if(connect(clientSocket,(sockaddr*)&sock,sizeof(sockaddr_in) )==SOCKET_ERROR)
还记得前几天一位兄弟少写了一个A,也查了半天,如下:
WSDATA wsaData;
看来使用C语言编码还是要细心的!
转载请注明原文地址: https://ju.6miu.com/read-677001.html