網路套接字函式

2021-09-22 10:13:29 字數 1944 閱讀 4521

socket函式

#include /* see notes */

#include

int socket(int domain, int type, int protocol);

domain:

af_inet這是大多數用來產生socket的協議,使用tcp或者udp來傳輸,用ipv4位址;

af_inet6與上面類似,不過時來用ipv6位址;

af_unix本地協議,使用在unix和linux系統上,一般時客戶機和伺服器在同一臺機器上時才能使用;

type:

sock_stream:這個協議時按照順序的,可靠的資料完整的基於位元組流的連線,這是乙個使用最多的sockt,是使用tcp進行傳輸;

sock_dgram這個協議是無連線的,固定長度的傳輸呼叫,該協議是不可靠的,使用udp來進行它的連線;

sock_seqpacket該協議是雙線路的,可靠的連線,傳送固定長度的資料報進行傳輸。必須把這個資料報完整的接受才能讀取。

sock_raw socket型別提供單一的網路訪問,這個socket型別使用icmp公共協議(ping ,traceroute使用該協議);

sock_rdm這個型別是很少使用的,在大部分作業系統中沒有實現,它是提供給資料鏈路層使用的,不保證資料報的順序;

protocol:

傳0表示使用預設協議;

返回值:成功指向新建立的socket的檔案描述符,失敗,返回-1 設定errorno;

2.bind函式 (將埠號和ip繫結在套接字上面)

#include /* see notes */

#include

int bind(int sockfd, const struct sockaddr addr, socklen_t addrlen);

sockfd:socket檔案描述符

addr:構造出ip位址加埠號;

addrlen:sizeof(addr)長度;

返回值:成功返回0,失敗返回-1設定errno;

3.listen函式(指定監聽上限數,指定bcaklog個客戶端等待連線)

#include / see notes /

#include

int listen(int sockfd, int backlog);

sockfd:socket檔案描述符;

backlog:排隊建立3次握手佇列和剛剛建立3次握手佇列的連線數和;

檢視系統預設的backlog

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

成功返回0,失敗返回-1;

4. accept函式

#include / see notes */

#include

int accept(int sockfd, struct sockaddr *addr, socklen_t addrlen);

socket:socket檔案描述符

addr:傳出引數,傳出鏈結客戶端位址資訊,含ip位址和埠號;

addrlen: 傳入傳出引數(值-結果),傳入sizeof(addr)大小,函式返回時返回真正接收到的位址結構體的大小返回值;

返回值:

成功返回乙個新的socket檔案描述符,用於和客戶端通訊,失敗返回-1,設定errorno;

5.connect函式(客戶端呼叫,連線伺服器)

#include / see notes */

#include

int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

sockfd:socket檔案描述符

addr;傳入引數,指定伺服器端位址資訊,含ip位址和埠號;

addrlen:傳入引數,傳入sizeof(addr)大小

返回值:成功返回0,失敗返回-1,設定errorno;

網路程式設計 套接字函式

編寫乙個完整的tcp客戶 伺服器程式需要一些基本的套接字函式 下面依次介紹上圖中涉及的基本套接字函式 read 和write 在此不做複述 socket函式 為執行網路i o,首先要呼叫socket 函式指定期望的通訊型別 family 指定協議族 type 指定套接字型別 protocol 或為協...

網路套接字 位址轉換函式

sockaddr in中的成員struct in addr sin addr表示32位的ip位址,但是我們通常採用的是利用點分十進位制ide字串來表示ip位址,以下的函式可以在字串表示和in addr表示之間的轉換。字串轉in addr的函式 in addr轉字串的函式 其中inet ptoa和in...

網路IPC 套接字

1.套接字是通訊端點的抽象。與應用程式要用檔案描述符訪問檔案一樣,訪問套接字也需要用套接字描述符。套接字描述符在unix系統是用檔案描述符實現的。要建立乙個套接字,可以呼叫socket函式。include int socket int domain,int type,int protocol 返回值...