日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

c++ socket学习(1.3)

發(fā)布時(shí)間:2023/12/1 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ socket学习(1.3) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文學(xué)習(xí)相關(guān)資料:
C/C++ socket編程教程

環(huán)境:vs2015
源碼:本文代碼

在這里c++ socket學(xué)習(xí)(1.1)學(xué)到了怎么樣建立TCP,然后通過(guò)TCP連接發(fā)送、接收信息。

但是都是一次性的,當(dāng)時(shí)是接收信息后就結(jié)束了,最多加個(gè)輸出把接收的信息打印出來(lái),現(xiàn)在來(lái)看一下怎么一直接收信息,直到程序接收到退出命令。

服務(wù)端

其實(shí)很簡(jiǎn)單,做個(gè)死循環(huán)就行了,這樣程序就會(huì)一直在接收客戶端發(fā)送過(guò)來(lái)的信息,直到客戶端發(fā)送exit

sockaddr_in servSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);memset(&sockAddr, 0, sizeof(sockAddr));//初始化 sockAddr.sin_family = AF_INET; //同上,即使用ipv4 sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //說(shuō)明要監(jiān)聽的ip地址 sockAddr.sin_port = htons(9000); //說(shuō)明要監(jiān)聽的端口號(hào) //IP和端口與套接字綁定起來(lái),監(jiān)聽sockAddr設(shè)置的ip地址和端口號(hào) bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); listen(servSock, 20);sockaddr_in clntAddr; //初始化clntAddr memset(&clntAddr, sizeof(SOCKADDR), 0); //使用accept返回的套接字clntSock來(lái)與響應(yīng)的客戶端進(jìn)行交流,即響應(yīng)客戶端的connect SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize); while (1) {int len = recv(clntSock, buf, maxlen, 0);std::string s(buf);if (s.compare("exit") == 0) {std::cout << "接收到關(guān)閉信息,關(guān)閉服務(wù)器" << std::endl;break;}std::cout << s << std::endl; } //關(guān)閉套接字 closesocket(clntSock);

客戶端

SOCKET client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);sockaddr_in servAddr; memset(&servAddr, 0, sizeof(sockaddr_in)); servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); servAddr.sin_port = htons(9000); servAddr.sin_family = AF_INET;//連接到服務(wù)端 connect(client, (sockaddr*)&servAddr, sizeof(sockaddr_in)); //循環(huán) while (1) {std::string s;//連接std::cout << "請(qǐng)輸入內(nèi)容(長(zhǎng)度為100個(gè)字符):";std::cin >> s;//這里就是發(fā)送數(shù)據(jù)了send(client, s.c_str(), s.size() + 1, 0);if (s.compare("exit") == 0) {break;} } //關(guān)閉套接字 closesocket(client);

記得在程序開頭說(shuō)明所用的winsock 版本號(hào)

總結(jié)

以上是生活随笔為你收集整理的c++ socket学习(1.3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。