tcp網路程式設計

2021-08-21 21:12:06 字數 2351 閱讀 3129

1

.inet_aton

()函式

和inet_ntoa

()函式

#include <

netdb.h

>

intinet_aton

(const char *

cp,struct

in_addr

*inp)

char *

inet_ntoa

(struct

in_addr

in)

inet_aton

()函式將

cp指向的點分十進位制字串型別的

ip位址,轉換為二進位制的

ip位址,轉換後的值儲存在指標

inp指向的結構

structure

in_addr中。

當轉換成功時返回值為非

0,當傳入的位址非法時,返回值為0。

2.inet_pton()函式和inet_ntop()函式

#include <

arpa

/inet.h

>

inet_pton

函式原型如下[將

"點分十進位制

" -> "

整數"]       

intinet_pton

(int

af, const char *

src, void *

dst);  

這個函式

轉換字串到網路位址,第乙個引數af是位址族(ipv4af_inet),轉換後存在dst指向的

struct

in_addr

結構體中。

inet_ntop

函式原型如下[將

"整數" -> "

點分十進位制

"]     

const char *

inet_ntop

(int

af, const void *

src, char *

dst,

socklen_t

cnt);

這個函式轉換網路

二進位制結構到

ascii

型別的位址,引數的作用和上面相同,只是多了乙個引數

socklen_tcnt,他是所指向快取區dst的大小,避免溢位,如果快取區太小無法儲存位址的值,則返回乙個空指標,並將errno置為enospc

void initnet()

/******將檔案描述符和伺服器的位址資訊繫結 bind ******/

struct sockaddr_in server_addr; //位址結構

server_addr.sin_family=af_inet; //位址族

server_addr.sin_port=htons(portnum); //埠號必須是網路位元組序

server_addr.sin_addr.s_addr=htonl(inaddr_any);//結構體中的結構體=所有可用ip位址

if(-1==bind(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr_in)))

/*******定義客戶端最大可連線數目 listen ******/

if(-1==listen(sockfd,10)) }

void accept_client(void)

/**********建立新的執行緒伺服器,單獨為某乙個客戶端服務***********/

pthread_t tid;

if(-1==pthread_create(&tid,null,net_thread,(void *)&new_fd))

}close(sockfd);

}

TCP網路程式設計

基於tcp 通訊模型 由上圖可以得出tcp通訊的步驟如下 服務端 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 設定允許的最大連線數,用函式listen 4 等待來著客戶端的連線請求,用函式accept 5 收發資料,用函式send 和...

網路程式設計 TCP

客戶端 1.建立客戶端的socket服務,指定目的主機和埠 2.為了傳送資料,應該獲取socket中的輸出流 3.獲取socket中的輸入流來獲取服務端的反饋資料 4.關閉資源 服務端 1.建立服務端的serversocket服務,並監聽乙個埠 2.通過accept方法 等待並獲取連線過來的客戶端s...

網路程式設計 TCP

即有傳送緩衝區 接收緩衝區,傳送次數和接收次數不一定對等。報頭長,成本高,需要搭載更多的資料。1.三次握手 通過對ack的確認,建立可靠連線。有超時重傳機制 2.四次揮手 有可能伺服器處理資料的時間較短,即三次揮手 3.狀態圖 2 保證遲來的資料報能被識別並丟棄 4.tcp狀態轉移過程 5.tcp報...