网络游戏编程客户端代码
时间: 2023-10-13 13:10:15 浏览: 46
网络游戏编程客户端代码的具体实现方式会因不同游戏引擎和编程语言而有所不同,下面是一个简单的示例代码,供参考:
```c++
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int main() {
// 初始化 Winsock
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
std::cerr << "WSAStartup failed: " << WSAGetLastError() << std::endl;
return 1;
}
// 创建 socket
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
std::cerr << "socket failed: " << WSAGetLastError() << std::endl;
WSACleanup();
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); // 服务器端口号
if (connect(sock, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
std::cerr << "connect failed: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
// 发送数据
std::string message = "Hello, server!";
if (send(sock, message.c_str(), message.length(), 0) == SOCKET_ERROR) {
std::cerr << "send failed: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
// 接收数据
char buffer[1024];
int bytesReceived = recv(sock, buffer, sizeof(buffer), 0);
if (bytesReceived == SOCKET_ERROR) {
std::cerr << "recv failed: " << WSAGetLastError() << std::endl;
closesocket(sock);
WSACleanup();
return 1;
}
buffer[bytesReceived] = '\0';
std::cout << "Received message from server: " << buffer << std::endl;
// 关闭 socket
closesocket(sock);
// 清理 Winsock
WSACleanup();
return 0;
}
```
该示例代码使用了 Windows 平台下的 Winsock API,通过创建 socket 连接服务器,并发送和接收数据。在使用时需要注意正确填写服务器 IP 地址和端口号。