windows udp client 例子?
时间: 2023-12-23 21:47:36 浏览: 23
以下是一个简单的 Windows UDP 客户端示例,它向指定的服务器发送消息并接收响应:
```c++
#include <WinSock2.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
int main() {
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock == INVALID_SOCKET) {
std::cout << "Failed to create socket: " << WSAGetLastError() << std::endl;
return 1;
}
sockaddr_in serverAddr;
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 服务器 IP 地址
serverAddr.sin_port = htons(12345); // 服务器端口号
char sendBuf[] = "Hello, server!";
int sendLen = sendto(sock, sendBuf, sizeof(sendBuf), 0, (sockaddr*)&serverAddr, sizeof(serverAddr));
if (sendLen == SOCKET_ERROR) {
std::cout << "Failed to send data: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
const int MAX_RECV_LEN = 1024;
char recvBuf[MAX_RECV_LEN];
int recvLen = recvfrom(sock, recvBuf, MAX_RECV_LEN, 0, nullptr, nullptr);
if (recvLen == SOCKET_ERROR) {
std::cout << "Failed to receive data: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
std::cout << "Received: " << recvBuf << std::endl;
closesocket(sock);
WSACleanup();
return 0;
}
```
注意,这个示例只是演示了基本的发送和接收,实际应用中可能需要更多的错误处理和协议逻辑。