使用socket函式建立乙個套接字物件:
socket socket(
int af, //指定套接字使用的位址格式,winsock只支援af_inet
int type, //指定套接字型別 sock_stream:流套接字(tcp) sock_dgram:資料報套接字(udp)
int protocol //配合type引數使用,指定套接字型別
);
函式執行失敗返回invalid_socket。
也可以使用winsock2的新函式wsasocket來建立套接字,與socket相比,提供了更多引數。
當不使用socket建立的套接字時,應呼叫closesocket函式將其關閉。沒有錯誤返回0,否則返回socket_error。
int closesocket(socket s);
套接字被建立後存在於指定的位址家族裡,但它是未命名的。bind函式通過安排乙個本地名稱到未命名的socket而建立此socket的本地關聯。本地名稱包含3各部分:主機位址、協議號、埠號。
int bind(
socket s, //套接字控制代碼
const struct sockaddr* name, //要關聯的本地位址
int namelen //位址的長度
);
//填充sockaddr_in結構
sockaddr_in sin;
sin.sin_family=af_inet; //指定位址家族,與af引數含義相同,智慧型用af_inet
sin.sin_port=htons(4567); //必須為網路位元組順序,因為與intel位元組順序相反,必須用htons函式轉換
sin.sin_addr.s_un.s_addr=inaddr_any;
//若應用程式不關心所使用位址,可指定internet位址為inaddr_any,系統自動使用當前主機配置的所有ip位址
//繫結這個套接字到乙個本地位址
if(::bind(slisten,(lpsockaddr)&sin,sizeof(sin))==socket_srror)
listen函式設定套接字進入監聽狀態。
int listen(
socket s, //套接字控制代碼
int backlog //監聽佇列中允許保持的尚未處理的最大連線數量
);
listen僅用再支援連線的套接字上,如sock_stream型別的他套接字,函式執行成功後,套接字s進入被動模式,到來的連線會被通知要排隊等候接受處理。
再同一時間處理多個連線請求的伺服器通常使用listen函式,若乙個連線請求到達,佇列已滿,客戶端將受到wsaeconnrefused錯誤。
accept函式用於接受到來的連線。
socket accept(
socket s, //套接字控制代碼
struct sockaddr* addr, //乙個指向sockaddr_in結構的指標,用於取得對方的位址資訊
int* addrlen //乙個指向位址長度的指標
);
對於流套接字來說,一般使用send和recv函式來收發資料。
int send(
socket s, //套接字控制代碼
const char far* buf, //要傳送資料的緩衝區位址
int len, //緩衝區長度
int flags //指定了呼叫格式,通常設定為0
);int recv(socket s,char far *buf,int len,int flags);
#include"../common/initsock.h"
#includeclnitsock initsock;
int main()
//填充sockaddr_in結構,繫結套接字到本地位址
sockaddr_in sin;
sin.sin_family=af_inet;
sin.sin_port=htons(4567);
sin.sin_addr.s_un.s_addr=inaddr_any;
return 0;
}
winsock程式設計
伺服器端 include include pragma comment lib,ws2 32.lib using namespace std void do service socket conn while 1 不斷接收客戶端傳送的資料 if lobyte wsadata.wversion 2 h...
Winsock程式設計框架
microsoft的windows sockets api是windows下的網路應用程式介面,為了適用於 windows下的訊息機制和非同步的i o選擇操作,windows sockets api在功能上擴充了將近 20個函式,其中擴充的部分均冠以字首wsa windows sockets asy...
winsock程式設計(一)
一 windows sockets 背景知識 socket的定義。socket控制代碼型別的描述。socket的應用領域。windowssockets規範為windows定義了一套面向位元組相容的網路程式設計介面。windowssockets基於unix socket 伯克利軟體發行機構,bsd,r...