【前言】
winsock是由unix下的bsd socket發展而來,是乙個與網路協議無關的程式設計介面。
【標頭檔案】
#include
【引用庫】
#pragma comment(lib, 「ws2_32.lib」)
【引數】
wversionrequested: 版本資訊。高階位元組指定小版本號,低位位元組指定主版本號。
lpwsadata: 返回請求的socket的版本資訊
【返回值】
成功:0;失敗:其它。
【說明】
1、非同步套接字啟動命令,在所有socket函式之前呼叫一次。
2、作業系統根據請求的socket版本來搜尋相應的socket庫,然後繫結找到的socket庫到該應用程式中。
3、利用第二個引數返回請求的socket的版本資訊。
4、【返回值】
成功:0;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【說明】
1、釋放套接字資源,斷開已建立的連線。
2、而已經由closesocket關閉卻仍有要傳送的資料的套介面則不會受影響,該資料仍要傳送。
3、可以在乙個迴圈中不斷呼叫wsacleanup,直至返回wsanotinitialised,來確保資源徹底清除。
4、【引數】
af:位址描述。目前僅支援af_inet。
type:套接字型別。如tcp(sock_stream)和udp(sock_dgram)。
protocol:套接字協議。常用的協議有:ipproto_tcp、ipproto_udp、ipproto_stcp、ipproto_tipc。
【返回值】
成功:新的套接字;失敗:invalid_socket。可通過wsagetlasterror獲取錯誤碼。
【說明】
1、用於根據指定的位址族、資料型別和協議來分配乙個套介面的描述字及其所用的資源。
2、【引數】
s:套接字。
【返回值】
成功:0;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【說明】
1、釋放乙個套接字s,以後對s的訪問均以wsaenotsock錯誤返回。
2、受語義 so_linger 與 so_dontlinger 選項的影響。
3、4、
【引數】
s: 套接字。
addr: 乙個結構體指標,包含協議族、ip、埠號。
addrlen: 結構體長度。
【返回值】
成功:0;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【引數】
s:乙個已**未連線套接字。
backlog:等待連線佇列的最大長度。
【返回值】
成功:0;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【說明】
1、為申請進入的連線建立乙個後備日誌,然後便可用accept()接受連線了。
2、申請進入的連線請求被確認,並排隊等待被接受。
3、僅適用於支援連線的套介面,如 sock_stream 型別的。
4、如果當乙個連線請求到來時,佇列已滿,那麼客戶將收到乙個wsaeconnrefused錯誤。
5、當沒有可用的描述字時,listen()函式仍試圖正常地工作。它仍接受請求直至佇列變空。當有可用描述字時,後續的一次listen()或accept()呼叫會參照 當前佇列值 和「後備日誌」 將佇列重新填充,如有可能的話,將恢復監聽申請進入的連線請求。
6、【引數】
s: 自己的套接字。
addr: 【out】乙個結構體指標,包含對方的協議族、ip、埠號。
addrlen: 結構體長度。
【返回值】
成功:對方的套接字;失敗:invalid_socket。可通過wsagetlasterror獲取錯誤碼。
【說明】
1、本函式從s的等待連線佇列中抽取第乙個連線,建立乙個與s同類的新的套介面並返回。
2、可阻塞。
3、【引數】
s: 乙個未連線的資料報或流類套介面。
addr: 要連線的位址,包含協議族、ip、埠號。
addrlen: 結構體長度。
【返回值】
成功:0;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【說明】
1、建立與指定外部埠的連線。
2、如套介面未被**,則系統賦給本地關聯乙個唯一的值,且設定套介面為已**。
3、【引數】
s:乙個用於標識已連線套介面的描述字。
buf:包含待傳送資料的緩衝區。
len:緩衝區中資料的長度。
flags:呼叫執行方式。
【返回值】
成功:傳送資料的長度;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【引數】
s 套接字
buff 待傳送資料的緩衝區
size 緩衝區長度
flags 呼叫方式標誌位, 一般為0, 改變flags,將會改變sendto傳送的形式
addr (可選)指標,指向目的套接字的位址
len addr所指位址的長度
【返回值】
成功:傳送資料的長度;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【引數】
s:乙個用於標識已連線套介面的描述字。
buf:包含待傳送資料的緩衝區。
len:緩衝區中資料的長度。
flags:呼叫執行方式。
【返回值】
成功:讀入的位元組數;連線已中止:0。失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
【引數】
s 已連線套介面的描述字
buff 接收資料緩衝區
size 緩衝區長度
flags 呼叫方式標誌位, 一般為0, 改變flags,將會改變sendto傳送的形式
addr (可選)指標,指向資料傳送源的位址
fromlen addr所指位址的長度
【返回值】
成功:讀入資料的長度;失敗:socket_error。可通過wsagetlasterror獲取錯誤碼。
socket程式設計小記
網路程式設計課上學習了一些socket函式,在c語言下和mfc下小結一下 首先socket的五元組有 源ip,目標ip,源埠,目的埠,協議 總的來說socket分為幾個步驟,對於客戶端 1.初始化 2.建立socket結構,填充如tcp udp型別,ipv4結構等 3.建立目標ip的位址,目的埠資訊...
socket程式設計小記
1.在寫乙個原始套接字程式設計的過程中查到的知識點 建立原始套接字之後,就可以使用sendto 和recvfrom 傳送和接收icmp資料報了。原始套接字接收報文規則 若接收的報文協議型別和定義的原始套接字匹配,那麼接收的所有資料拷貝入套接字中 如果套接字繫結了本地位址,那麼只有接收資料ip頭中對應...
Socket程式設計問題小記
在socket程式設計中,如果在乙個while迴圈中使用 objectinputstream reader new objectinputstream socket.getinputstream reader.readobject 可能會出現eofexception,看了網上的很多答案和解釋,覺得都...