linux網路通訊二(TCP)

2021-09-24 21:51:45 字數 2473 閱讀 7141

tcp通訊

流程圖如下

1、建立--socket套接字

相同2、繫結--將建立的socket套接字返回的控制代碼與本機的ip、埠繫結

相同3、監聽--監聽socket

#include

int listen(int s,int backlog);

s--監聽的控制代碼

backlog--監聽的最大數,預設20

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

4、建立連線--當客戶端請求後,呼叫accept()建立與客戶端的連線

#include

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

accept()函式從連線請求佇列中獲得連線資訊,建立新的套接字,並返回該套接字的檔案描述符,客戶端與伺服器端通過新的套接字通訊。最初通過socket建立的套接字扔監聽客戶端請求。

s -- 監聽的套接字控制代碼

addr -- 伺服器的位址結構體

addrlen -- 位址結構體大小

成功返回新套接字控制代碼,失敗返回-1

5、傳送(接收)

#include

#include

ssize_t send(int s, const *buf, size_t len,int flags);

s --- accept()返回的新控制代碼

buf -- 傳送資料的緩衝區首位址

len -- buf的大小

成功返回傳送的位元組數, 失敗返回0

ssize_t recv(int s,void *buf,size_t len,int flags);

s--accept()返回的新控制代碼

buf -- 傳送資料的緩衝區首位址

len--緩衝區的最大

6、關閉socket

7、connect()

#include

#include

int connect(int sockfd, struct sockaddr * serv_sddr, int addr_len);

成功返回 0 失敗返回-1

**例項:

//伺服器端,echo_server.c

/**流程:

1、建立--socket套接字

2、繫結--將建立的socket套接字返回的控制代碼與本機的ip、埠繫結

3、監聽--監聽socket

4、建立連線--當客戶端請求後,呼叫accept()建立與客戶端的連線

5、傳送(接收)

6、關閉socket

**/#include#include#include#include#include#include#include#define echo_port 9091

#define max_client_num 10

int main()

printf("create socket ok\n");

//2 bind()

serv_addr.sin_family=af_inet;

serv_addr.sin_port=htons(echo_port);

serv_addr.sin_addr.s_addr = inaddr_any;

res = bind(sock_fd,(struct sockaddr*) &serv_addr,sizeof(serv_addr));

if (res != 0)

else

//3 listen()

res = listen(sock_fd,max_client_num);

if(res != 0)

else

len = sizeof(client_addr);

while(1)

else

//5 接收

res = recv(clientfd,buf,100,0);

if(res <= 0)

buf[res]='\0';

printf("===%d===\nclinet request:%s*\n",count,buf);

if((strncmp(buf,"quit",4))==0)

send(clientfd,buf2,sizeof(buf2),0);

count ++;

} close(clientfd);

close(sock_fd);

return 0;

}

//客戶端

#include#include#include#include#include#include#include#define echo_port 9091

#define max_client_num 10

int main()

網路通訊C S模型 TCP

基本模型圖如下 伺服器呼叫socket bind listen 完成初始化後,呼叫accept 阻塞等待,處於監聽埠的狀態,客戶端呼叫socket 初始化後,呼叫connect 發出syn段並阻塞等待伺服器應答,伺服器應答乙個syn ack段,客戶端收到後從connect 返回,同時應答乙個ack段...

網路通訊概述 TCP協議

描述 一 請寫出ip位址的概念 二 請寫出埠號的概念 答案 ip位址 網際網路協議位址 internet protocol address 俗稱ip.ip位址用來給乙個網路中的計算機裝置做唯一的編號 埠號 埠號用來給計算機裡的應用程式 程序 做唯一的標識,用 2個位元組表示的整數 取值範圍 0 65...

socket網路通訊《二》

socket網路通訊 本文注意基於socket來分析tcp連線建立過程。先回顧一下tcp連線建立過程 主機a執行的是tcp客戶端程式,主機b執行的是tcp伺服器程式,最初兩端tcp程序處於closed態,a主動開啟連線,對應客戶端connect函式發起連線,b被動接受連線,對應於伺服器listen函...