當前位置:
首頁 >
简易TCP服务器搭建
發布時間:2023/12/29
61
豆豆
生活随笔
收集整理的這篇文章主要介紹了
简易TCP服务器搭建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、套接字及其分類
二、相關接口函數
三、TCP服務器搭建流程
1、創建套接字socket()
2、保存服務器信息
3、套接字綁定
4、監聽客戶端連接請求
5、接收客戶端連接請求
6、數據收發
7、關閉套接字
四、運行結果
一、套接字及其分類
????????所謂套接字(Socket),就是對網絡中不同主機上的應用進程之間進行雙向通信的端點的抽象。一個套接字就是網絡上進程通信的一端,提供了應用層進程利用網絡協議交換數據的機制。從所處的地位來講,套接字上聯應用進程,下聯網絡協議棧,是應用程序通過網絡協議進行通信的接口,是應用程序與網絡協議棧進行交互的接口
流式套接字(SOCK_STREAM): ????????數據以字節流的方式進行傳遞,無大小限制.保證數據可靠,無丟失, 順序發送.主要用于TCP協議. 一般情況下只要選擇流式方式,那內核就會默認選擇TCP傳輸層協議 數據報套接字(SOCK_DGRAM ): ????????主要通過數據報的方式發送,固定大小。不能保證數據可靠,可能 丟失,亂序發送.主要用于UDP協議. 一般情況下只要選擇數據報方式,那內核就會默認選擇UDP傳 輸層協議 原始套接字(SOCK_RAW): ????????可以對較低層次協議如IP、ICMP直接訪問二、相關接口函數
socket(); 創建套接字. bind(); 綁定套接字 listen(); 監聽 accept(); 接收客戶端連接請求 connect(); 主動發送連接請求 close(); 關閉套接字 read()/write(); 數據收發三、TCP服務器搭建流程
1、創建套接字socket()
//創建套接字int sockfd = socket(AF_INET, SOCK_STREAM, 0);if(sockfd == -1){perror("socket");exit(-1);}2、保存服務器信息
//保存地址信息struct sockaddr_in addr;//該結構體用于保存某個網絡地址addr.sin_family = AF_INET;//設置地址族為IPV4addr.sin_port = htons(9090);//設置端口號addr.sin_addr.s_addr = inet_addr("192.168.22.84");//分配IP地址,此處涉及兩層結構體3、套接字綁定
//套接字綁定if( bind(sockfd, (struct sockaddr *)&addr, sizeof(addr) ) == -1){perror("bind");exit(-1);}printf("綁定成功\n");4、監聽客戶端連接請求
if( listen(sockfd, 5) == -1 ){perror("監聽:");exit(-1);}printf("監聽成功\n");5、接收客戶端連接請求
//接收客戶端請求//獲取通信(連接)套接字,后續通信使用通信套接字,不使用監聽套接字int comfd = accept(sockfd, NULL, NULL);if(comfd == -1){perror("獲取通信套接字");exit(-1);}printf("通信套接字獲取成功(接收成功)\n");6、數據收發
//數據收發開始while(1){//memset(buf, 0, N);read(comfd, buf, N);puts(buf);//sleep(1);}//數據收發結束7、關閉套接字
//關閉套接字close(comfd);close(sockfd);四、運行結果
服務器顯示運行結果:
?1、單獨運行服務器,客戶端未連接
2、客戶端連接服務器,但未發送數據
(1)、客戶端
(2)、服務器
3、客戶端發送數據
(1)客戶端
?(2)服務器
4、多次測試結果
好的,以上就是本期內容了!!!
歡迎大家參考,指正!!!
總結
以上是生活随笔為你收集整理的简易TCP服务器搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在SQL Server 2014下面使用
- 下一篇: SEO网站优化最高境界是无刀胜有刀