C语言网络编程:TCP编程模型
生活随笔
收集整理的這篇文章主要介紹了
C语言网络编程:TCP编程模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編程模型
TCP編程模型如下
TCP服務器的工作過程如下:
- 服務器創建一個專門的“文件描述符”來監聽來自客戶端的“三次握手”,然后建立鏈接
- 鏈接建立成功后,服務器會分配一個專門的“通信文件描述符”,用于實現與該客戶端的通信
以上通信模型是由于TCP本身的特點:面向連接的,可靠的,字節流通信方式
通信過程
服務器:
- 創建套接字,返回套接字的文件描述符
skfd = socket() - 將套接字文件描述符、ip、端口號綁定在一起,建立固定的對應關系
bind() - 將套接字文件描述符轉為被動描述符,用于被動監聽客戶端鏈接
listen() - 與客戶端三次握手成功,返回一個通信描述符
fd=accept() - 服務器向客戶端發送、接收數據
write(fd);send(fd),read(fd);recv(fd); - 四次揮手斷開連接,可以由任意方發起
close(fd);shutdown(fd)
客戶端:
- 創建套接字文件
skfd = socket() - 主動向服務器發起鏈接請求,三次握手OK后即鏈接成功
connet(skfs..) - 客戶端向服務器發送數據
write(skfd);send(skfd) - 客戶端接收服務器數據
read(skfd);recv(skfd) - 四次揮手斷開鏈接,可以由任意方發起
close(fd);shutdown(fd)
以上流程中可以看到服務器在與客戶端通信過程中的收發數據使用的是新的文件描述符fd,而客戶端收發數據使用的是創建socket時的描述符skfd,這里服務器是需要支持多客戶端鏈接;即每個客戶端與服務器進行鏈接后服務器都會創建一個新的文件描述符fd,用于單獨和該客戶端進行通信。
總結
以上是生活随笔為你收集整理的C语言网络编程:TCP编程模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顺丰快递笔记本电脑邮费+保价费,一共多少
- 下一篇: 求一个真心交友的个性签名。