Socket常用函式總結

2021-09-28 16:50:58 字數 2856 閱讀 4193

socket簡介:

​ 眾所周知,基於網路分層結構,我們構建了目前所使用的網路。而基於分層思想,網路體系中每層只需要完成自己的任務,而網路中每個層次之間的協作是由上層呼叫下層提供的介面(api)來實現的。socket就是傳輸層提供給應用層的網路程式設計介面,它起源於unix,目前是事實上的工業標準,所以它的重要性就不言而喻了。socket是開發基於**客戶/伺服器(c/s)通訊模型應用程式的主要主要手段。它的設計繼承了unix/linux」萬物皆檔案「**的設計哲學,在實際程式設計中,我們可以把它看作是一種特殊的檔案。

socket標識:

標識通訊端點(對外):

作業系統/程序管理套接字(對內):

sockaddr_in結構:

struct sockaddr_in
socket常用函式總覽:
int

wsastartup

(word wversionrequested, lpwsadata ipwsadata)

;

第二個引數返回實際的winsock的版本資訊。

返回值為0時表示成功。

例子:使用2.1版本的winsock的程式**:

word request;

wsadata ws;

request =

makeword(2

,1);

int err =

wsastartup

(request,

&ws);if

(err !=0)

if(lobyte

(ws.wversion)!=2

||hibyte

(ws.wversion)!=1

)return true;

int

wsacleanup

(void

);

int

socket

(int protofamily,

int type,

int proto)

第二個引數(套接字型別):

第三個引數(協議號):

例子:建立乙個流套接字:

struct protoent *p;

p =getprotobyname

("tcp");

//通過協議名得到協議號

socket sd =

socket

(pf_inet, sock_stream, p->p_proto)

;

int

closesocket

(int sd)

;//windows

intclose

(int sd)

;//linux

返回值:

int

bind

(int sd,

const

struct sockaddr* localaddr, socklen_t addrlen)

;

第乙個引數(套接字描述符)

客戶端一般不必呼叫bind函式。(因為一般就乙個網絡卡)

伺服器端有可能會連線多個網路,同時擁有多個ip位址,此時應使用位址萬用字元inaddr_any來匹配所有連線的ip位址。

int

connect

(int sd,

const

struct sockaddr *saddr, socklen_t saddrlen)

;

int

listen

(int sd,

int queuesize)

;

第二個引數,設定連線請求佇列大小

返回值:

int

accept

(int sd,

struct sockaddr *caddr,

int*caddrlen)

利用返回的新的套接字newsock與客戶通訊。

caddrcaddrlen分別用於返回客戶端套接字的位址和位址長度

int

recv

(int sd,

void

*buffer,

int len,

int flags)

;

int recvform(int sockfd, void *buf, int len, int flags, struct sockaddr *src_addr, int *addrlen)
int

send

(int sd,

const

void

*buf, size_t len,

int flags)

;

int

sendto

(int sd,

const

void

*buf, size_t len,

int flags)

;

socket程式設計常用函式總結

資料型別 int8 t 帶符號8位整數 uint8 t 無符號8位整數 sa family t 套介面位址結構的位址族 socklen t 長度,一般為uint32 t in addr t ipv4 位址,一般32位 in port t tcp udp 埠,一般16位 結構 struct in ad...

linux下socket常用函式

1 setprotoent 開啟網路協議的資料檔案 相關函式 getprotobyname,getprotobynumber,endprotoent 表頭檔案 include 定義函式 void setprotoent int stayopen 函式說明 setprotoent 用來開啟 etc p...

socket網路程式設計介面常用函式

3.listen函式 4.accept函式 5.connect函式 6.recv函式 7.closesocket shutdown 函式 中斷連線 int socket socket int af,int type,int protocol af 位址資料族系 type 通訊方式 protocal ...