服务端:
1 WSAStartup(版本,本机的最高版本)
WSAStartup函数的第一个参数是加载WinSock库的版本,WSAStartup函数的第二个参数中设置使用的WinSock库的版本,当正确初始化时,WSAStartup会返回0。但我在WSAStartup函数的第一个参数中胡乱设置了一个版本号,WSAStartup仍然会返回0。
如果在WSAStartup函数第一个参数中设置的版本号不存在,那么会自动使用WinSock库中最低的版本1.1。
2socket(协议方案,数据流/快形式,附加协议)
socket 成功
INVALID_SOCKET 错误
socket返回的值是一个文件描述符,SOCKET类型本身也是定义为int的,既然是文件描述符,那么在系统中都当作是文件来对待的,0,1,2分别表示标准输入、标准输出、标准错误。所以其他打开的文件描述符都会大于2, 错误时就返回 -1. 这里INVALID_SOCKET 也被定义为 -1
3 bind(socket返回的socket,定义的SOCKADDR_IN 结构体,<-这个的大小)
0 成功
SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码
4 listen(socket返回的socket,队列长度)
0 成功
SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码
5 accept (socket返回的socket,指向的定义的SOCKADDR_IN 结构体指针,指针的大小)
0 成功
SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码
6 recv/recvfrom (socket返回的socket,要放在的BUF,BUF长度,接收方式)
0 返回收到的字节数目
=0断开连接
<0错误
7 send/sendto(socket返回的socket,要发的,发的长度,接收方式)
0 返回发的字节数目
=0断开连接
<0错误
客户端:
connect (socket返回的socket,定义的SOCKADDR_IN 结构体,<-这个的大小)
阻塞时:
0 成功
SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码
非阻塞时:不能立即返回值,连接 返回SOCKET_ERROR
WSAGETLASTERROR 函数返回WSAEWOULDBLOCK