利用套接字实现 CS 模型
生活随笔
收集整理的這篇文章主要介紹了
利用套接字实现 CS 模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
例子:大寫轉小寫。
注意:代碼都是運行在Linux內核中。
服務器端:
客戶端:
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h> int main() {// 創建客戶端socketint cfd = socket(AF_INET, SOCK_STREAM, 0);// 客戶端應該綁定bind自己的IP和端口,但也可以不綁定,系統會幫助做“隱式綁定”// 注意:服務器可以做隱式綁定嗎? // 答: 不可以,因為隱式綁定,服務器的IP和端口不固定,客戶端不知道該連接哪// 鏈接服務器struct sockaddr_in server_addr; // 因為要鏈接服務器,存儲的服務器的IP地址和端口號// 指定服務器的地址信息server_addr.sin_family = AF_INET;server_addr.sin_port = htons(8888); inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr.s_addr); // 轉 網絡字節序 socklen_t addrlen = sizeof(server_addr); // 指定服務器的地址長度connect(cfd, (struct sockaddr*)&server_addr, addrlen); // 鏈接服務器char buf[256];while(1){// 向服務器傳數據fgets(buf, sizeof(buf), stdin); // 從鍵盤輸入,存入buf// 注意:fgets 特性,一直接收鍵盤輸入,以回車作為結尾,然后自動給加\0// 舉例 hello 經過fgets 存入buf的是 “hello\n\o”write(cfd, buf, strlen(buf)); // 因此,此處用strlen,而不是sizeof// 服務器處理后,客戶端讀取數據int n = read(cfd, buf, sizeof(buf));// 寫入屏幕write(STDOUT_FILENO, buf, n);}close(cfd);return 0; }總結
以上是生活随笔為你收集整理的利用套接字实现 CS 模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多路访问链路和协议
- 下一篇: 套接字错误处理函数的封装思想及函数实现