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函...