2024年4月28日发(作者:)

printf("Client recvBuf = %sn", recvBuf);

iLen = send(socket_cli, sendBuf, strlen(sendBuf) + 1, 0);

if (iLen < 0) {

printf("send errorNum = %dn", GetLastError());

return -1;

}

closesocket(socket_cli);

WSACleanup();

return 0;

}

UDP通讯

Server端

#include

#include

#include

#pragma warning(disable:4996)

#pragma comment(lib, "ws2_")

using namespace std;

#include

#include

int main() {

// 初始化套接字库

WORD wVersion; WSADATA wsaData;

int err; wVersion = MAKEWORD(1, 1);

err = WSAStartup(wVersion, &wsaData);

if (err != 0) {

return err;

}

if (LOBYTE(on) != 1 || HIBYTE(on) != 1) { WSACleanup(); return -1;

}// 创建套接字

SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);

cout << "socket创建成功" << endl;

SOCKADDR_IN addrSrv;

_addr.S_un.S_addr = htonl(INADDR_ANY);

_family = AF_INET;

_port = htons(6003);

// 绑定套接字

bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));

// 等待并接收数据

SOCKADDR_IN addrCli;

int len = sizeof(SOCKADDR_IN);

char recvBuf[100];

char sendBuf[100];

while (true) {

std::cout << "循环" << std::endl;

recvfrom(sockSrv, recvBuf, 100, 0, (SOCKADDR*)&addrCli, &len);

std::cout << recvBuf << std::endl;

sprintf_s(sendBuf, 100, "Ack %s", recvBuf);

sendto(sockSrv, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrCli, len);

}closesocket(sockSrv);

WSACleanup();

system("pause");

return 0;

}

Client端:

int main() {

{ // 加载套接字库

WORD wVersion;

WSADATA wsaData;

int err; wVersion = MAKEWORD(1, 1);

err = WSAStartup(wVersion, &wsaData);

if (err != 0) {

return err;

}if (LOBYTE(on) != 1 || HIBYTE(on) != 1) {

WSACleanup(); return -1; }

// 创建套接字

SOCKET sockCli = socket(AF_INET, SOCK_DGRAM, 0);

SOCKADDR_IN addrSrv;

_addr.S_un.S_addr = inet_addr("127.0.0.1");

_port = htons(6001);