1、vs2019下添加ws2_32.lib
右鍵項目—>屬性—>鏈接器—>輸入—>附加依賴項,點擊編輯,添加ws2_32.lib庫文件
或者是在cpp源文件中用 #pragma comment(lib,“ws2_32.lib”)來代替。
服務器端源程序
#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()
{ WORD sockVersion
= MAKEWORD(2, 2);WSAData wsaData
;if (WSAStartup(sockVersion
, &wsaData
) != 0) {return 0;}SOCKET slisten
= socket(AF_INET
, SOCK_STREAM
, IPPROTO_TCP
);if (slisten
== INVALID_SOCKET
) {printf("socket error!");return 0;}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!");}if (listen(slisten
, 5) == SOCKET_ERROR
) {printf("listen error!");return 0;}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
));int ret
= recv(sClient
, revData
, 255, 0);if (ret
> 0) {revData
[ret
] = 0x00;printf(revData
);}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);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(); 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;}
總結
以上是生活随笔為你收集整理的在VS2019 C++ 中实现Socket通信,添加ws2_32.lib静态库的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。