1.word型別分析
word型別是乙個16位的無符號整型,定義如下
typedef unsigned short word;
提供兩個位元組的儲存,在socket中這個兩個位元組可以分別用來表示主版本號和副版本號
2.makeword巨集
word makeword(byte blow, byte bhigh);
將兩個byte型合併成乙個word型,乙個在高8位,乙個在低8位
返回乙個word變數
3.wsadata
在wsastarup()函式中作為乙個返回值,儲存這個函式載入的socket的初始化資訊
把wsadata的指標型別lpwsada作為返回值傳入wsastarup(),
typedef struct wsadatawsadata, far *lpwsadata
4.wsastarup()
函式宣告:
int wsastarup(word wversionrequested, lpwsadata lpwsadata);
返回:返回int型,返回0則初始化成功,socket_error表示失敗
初始化socket的程式段如下:
word wversionrequested;
wsadata wsadata;
int err;
wversionrequested = makeword(1.1);
err = wsastarup(wversionrequested, &wsadata);
if(err != 0) s_un_b;
struct s_un_w;
u_long s_addr;
}s_un;
typedef struct in_addr in_addr;
in_addr結構實際上是乙個聯合,利用這個結構將乙個char *型別表示的點分十進位制的ip位址轉換為u_long型別,並將結果賦給成員s_addr
9.unsigned long inet_addr(const char far* cp);
返回:乙個適合分配給s_addr的u_long型別的整型
10.sockaddr_in和sockaddr_in
struct sockaddr_in{
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
typedef struct sockaddr_in sockaddr_in;
注:全大寫和全小寫的關係一般為大寫型別為小寫的typedef形式
sin_family 位址族 對於tcp/ip位址為af_inet
sin_port 指定要分配給套接字的埠
sin_zero[8] 填充數,使sockaddr_in結構和sockaddr結構的長度一樣
sin_addr 是乙個in_addr型別
建立套接字及位址結構的程式段
socket socksrv = socket(af_inet, sock_dgram, 0);
sockaddr_in addrsrv;
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htos(6000);
addrsrv.sin_addr_s_un.s_addr = htol(inaddr_any);
11.bind()函式
int bind(socket s, const struct sockaddr far*name, int namelen);
引數:要繫結的套接字,這個套接字要繫結的位址結構型別為sockaddr *,第三個引數是sockaddr位址結構的長度
注:bind()函式引數中要求的位址結構型別為sockaddr *,而tcp/ip協議族中的位址結構為sockaddr_in,所以在此api中要將之前建立的sockaddr_in型別的位址結構強制轉換為sockaddr*
bind(socksrv, (sockaddra*)&addrsrv, sizeof(sockaddr))
注:socket程式設計有關的api中,當乙個引數是sockaddr的位址結構型別時,隨後的引數一般是這個結構型別的長度(單位是位元組)
socket程式設計入門(二)
在動手編寫socket通訊程式之前,還需要補充一些可能用到的函式。本文列出這些函式。accept int accept int sockfd,struct sockaddr addr,socklen t addrlen 從已完成連線佇列返回第乙個連線,如果已完成連線隊列為空,則阻塞,失敗返回 1 s...
Socket程式設計入門 二
1.htons u short htons u short hostshort 功能 把乙個u short型別的值從主機位元組順序轉換為網路位元組順序 引數 乙個以主機位元組順序表示的16位數值 返回 網路位元組序表示的16位數值 2.htonl u long htonl u long hostlo...
socket程式設計(一)
1 socket可以看成是使用者程序與核心網路協議的程式設計介面。2 socket不僅可以用於本機的程序間通訊,還可以用於網路不同主機的程序間通訊。異構架構可以不同 手機pc ipv4套介面位址結構通常也稱為 網際套接字位址結構 它以sockaddr in命名,定義在標頭檔案中 struct soc...