Socket程式設計入門 一

2022-09-18 05:09:25 字數 2127 閱讀 5857

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...