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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

在VS2019 C++ 中实现Socket通信,添加ws2_32.lib静态库

發(fā)布時間:2023/12/9 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在VS2019 C++ 中实现Socket通信,添加ws2_32.lib静态库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、vs2019下添加ws2_32.lib
右鍵項目—>屬性—>鏈接器—>輸入—>附加依賴項,點擊編輯,添加ws2_32.lib庫文件

或者是在cpp源文件中用 #pragma comment(lib,“ws2_32.lib”)來代替。
服務(wù)器端源程序

#include<iostream> #include<stdio.h> #include<WinSock2.h> #include<string.h>using namespace std;#pragma comment(lib,"ws2_32.lib") #pragma warning(disable:4996)int main() { //初始化WSAWORD sockVersion = MAKEWORD(2, 2);WSAData wsaData;if (WSAStartup(sockVersion, &wsaData) != 0) {return 0;}//創(chuàng)建套接字SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (slisten == INVALID_SOCKET) {printf("socket error!");return 0;}//綁定IP和端口號sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = INADDR_ANY;if (bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) {printf("bind error!");}//開始監(jiān)聽if (listen(slisten, 5) == SOCKET_ERROR) {printf("listen error!");return 0;}//循環(huán)接受數(shù)據(jù)SOCKET sClient;sockaddr_in remoteAddr;int nAddrlen = sizeof(remoteAddr);char revData[255];while (true) {printf("等待連接。。。。。\n");sClient = accept(slisten, (SOCKADDR*)&remoteAddr, &nAddrlen);if (sClient == INVALID_SOCKET) {printf(" 接受錯誤!");continue;}printf("接收到一個連接:%s\r\n", inet_ntoa(remoteAddr.sin_addr));//接收數(shù)據(jù)int ret = recv(sClient, revData, 255, 0);if (ret> 0) {revData[ret] = 0x00;printf(revData);}//發(fā)送數(shù)據(jù)const char* sendData = "你好,TCP客戶端!\n";send(sClient, sendData, strlen(sendData), 0);closesocket(sClient);}closesocket(slisten);WSACleanup();return 0; }


客戶端源程序

#include<iostream > #include<stdio.h>#include<WinSock2.h>#include<cstring> using namespace std;#pragma comment(lib,"ws2_32.lib")int main() {WORD sockVersion = MAKEWORD(2, 2);WSADATA data;if (WSAStartup(sockVersion, &data) != 0) {return 0;}while (true) {SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sclient == INVALID_SOCKET) {printf("invalid socket!");return 0;}sockaddr_in serAddr;serAddr.sin_family = AF_INET;serAddr.sin_port = htons(8848);//inet_pton(AF_INET, "127.0.0.1", &serAddr.sin_addr.s_addr);serAddr.sin_addr.S_un.S_addr = inet_addr("");if (connect(sclient, (sockaddr*)&serAddr, sizeof(serAddr)) == SOCKET_ERROR){//連接失敗printf("connect error!");closesocket(sclient);return 0;}string data;cin >> data;const char* sendData;sendData = data.c_str(); //string轉(zhuǎn)換為const char*//char* sendData = ("你好,TCP服務(wù)器端,我是客戶端\n");send(sclient, sendData, strlen(sendData), 0);char recData[255];int ret = recv(sclient, recData, 255, 0);if (ret > 0) {recData[ret] = 0x00;printf(recData);}closesocket(sclient);}WSACleanup();return 0;}

總結(jié)

以上是生活随笔為你收集整理的在VS2019 C++ 中实现Socket通信,添加ws2_32.lib静态库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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