以下是一个简单的 C++ 本地服务器示例代码:
#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
int main() {
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
if (server_socket == -1) {
std::cerr << "Failed to create server socket.\n";
return 1;
}
sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8080);
server_address.sin_addr.s_addr = INADDR_ANY;
if (bind(server_socket, (sockaddr*) &server_address, sizeof(server_address)) == -1) {
std::cerr << "Failed to bind server socket.\n";
return 1;
}
if (listen(server_socket, SOMAXCONN) == -1) {
std::cerr << "Failed to listen on server socket.\n";
return 1;
}
while (true) {
sockaddr_in client_address;
socklen_t client_address_size = sizeof(client_address);
int client_socket = accept(server_socket, (sockaddr*) &client_address, &client_address_size);
if (client_socket == -1) {
std::cerr << "Failed to accept client socket.\n";
continue;
}
char buffer[1024];
ssize_t bytes_read = recv(client_socket, buffer, sizeof(buffer), 0);
if (bytes_read == -1) {
std::cerr << "Failed to read from client socket.\n";
close(client_socket);
continue;
}
std::string response = "Hello, world!";
if (send(client_socket, response.c_str(), response.length(), 0) == -1) {
std::cerr << "Failed to send response to client socket.\n";
close(client_socket);
continue;
}
close(client_socket);
}
close(server_socket);
return 0;
}
这个简单的服务器会监听 8080
端口,当有连接时,会向连接的客户端发送一个 "Hello, world!" 的字符串。注意,这个服务器是非常简陋的,只是一个简单的演示。在实际生产环境中,你需要考虑处理并发连接、处理错误情况、输入验证等一系列问题。