Issue: socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
总是返回-1
Code:
(省略了头文件的引用)
int _tmain(int argc, _TCHAR* argv[])
{
int socketId;
socketId = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
cout<<"socketId="<<socketId<<endl;
return 0;
}
Solution:添加红色代码。(注意:简单起见,这里没有对函数返回值做应有的验证。)
#include
int _tmain(int argc, _TCHAR* argv[])
{
int socketId;
WSADATA wsData;
WSAStartup(MAKEWORD(2,2),&wsData);
socketId = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
cout<<"socketId="<<socketId<<endl;
return 0;
}
调Windows Socket相关函数时,要先调
WSAStartup
,该函数会做些准备工作。