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

2021-10-14 07:58:29 字數 1595 閱讀 2653

3. listen函式

4.accept函式

5.connect函式

6.recv函式

7.closesocket(),shutdown()函式 中斷連線

int socket socket(int af,int type,int protocol)

af:位址資料族系 type:通訊方式 protocal:傳輸協定編號

返回值:-1表示建立socket傳送變化,非負整數則表示成功,稱為socket描述符

int bind(socket s,const struct sockaddr* name,int namelen)

s:指定好通訊協定的socket name:本地端位址 namelen:name長度

struct socketaddr_ins_un_b;

​ structs_un_w;

​ u_long s_addr;

}s_un;

}in_addr;

使用union的聯合體,實際上大小是32bit的長整形,只要寫入u_long s_addr這個變數,標頭檔案中巨集定義#define s_addr s_un.s_addr,寫入ip時使用inet_addr(「ip位址字串」)轉換成unsigned long型別

listen是使socket進入等待連線狀態,等待客戶端連上線;

如果有client想要連過來,此時可以呼叫connect()來跟server連線,server接受後會建立新的socket和client通訊,listen socket則繼續存在等待其他client,直到關閉為止

int listen(socket s,int backlog);

s:設定好bind(),並且尚未連線的socket

backlog:等待server接受連線前,同時最大連線數

返回值:-1表錯誤,否則為0

socket accept(socket s,struct sockaddr* addr,int* addrlen);

s:乙個設定為listen狀態的socket

addr:client 端位址諮詢,由函式自動生成填入

addrlen:sddr長度,由函式自動產生

返回值:-1表示錯誤,否則傳回另乙個包含client端諮詢的新socket descriptor,作為傳送資料用

傳進accept()的listen socket 本身並沒有辦法作資料的傳輸,所有必須透過accept()產生乙個包含通訊協定、server\client諮詢的新socket,利用他進行資料的傳輸

int connect(socket s,const struct sockaddr* name,int namelen);

返回值:-1表示錯誤,否則返回0

int recv(socket s,char* buf,int len,int flags);

s:乙個建立連線成功的socket

buf:呼叫recv,用來儲存收到的資料

len:buf的長度

flags:選擇工作模式,一般為0

返回值:-1表示錯誤,否則回傳接收到資料的長度

在accept()或connect()成功後建立的通訊用socket,必須用closesocket()或shutdown()來結束連線

socket程式設計常用介面列表

api介面 講解int socket int addressfamily,int type,int protocol int close int socketfiledescriptor socket 建立並初始化 socket,返回該 socket 的檔案描述符,如果描述符為 1 表示建立失敗。c...

網路程式設計 Socket程式設計

一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...

socket網路程式設計

首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...