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