socket函式返回值分析
服務端:
1 WSAStartup(版本,本機的最高版本)
WSAStartup函式的第一個引數是載入WinSock庫的版本,WSAStartup函式的第二個引數中設定使用的WinSock庫的版本,當正確初始化時,WSAStartup會返回0。但我在WSAStartup函式的第一個引數中胡亂設定了一個版本號,WSAStartup仍然會返回0。
如果在WSAStartup函式第一個引數中設定的版本號不存在,那麼會自動使用WinSock庫中最低的版本1.1。
2socket(協議方案,資料流/快形式,附加協議)
socket 成功
INVALID_SOCKET 錯誤
socket返回的值是一個
3 bind(socket返回的socket,定義的SOCKADDR_IN 結構體,<-這個的大小)
0 成功
SOCKET_ERROR 錯誤(<0)可用WSAGETLASTERROR 函式取錯誤碼
4 listen(socket返回的socket,佇列長度)
0 成功
SOCKET_ERROR 錯誤(<0)可用
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