请用c++写一个服务器
以下是一个简单的C++服务器的示例代码:
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
// 创建socket
int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket == -1) {
std::cerr << "Failed to create socket" << std::endl;
return -1;
}
// 设置服务器地址和端口
sockaddr_in serverAddress{};
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = INADDR_ANY;
serverAddress.sin_port = htons(8888); // 使用8888端口
// 绑定socket到指定地址和端口
if (bind(serverSocket, (struct sockaddr *)&serverAddress, sizeof(serverAddress)) == -1) {
std::cerr << "Failed to bind socket" << std::endl;
return -1;
}
// 监听连接
if (listen(serverSocket, 10) == -1) {
std::cerr << "Failed to listen on socket" << std::endl;
return -1;
}
std::cout << "Server started, listening on port 8888" << std::endl;
while (true) {
// 接受新的连接
sockaddr_in clientAddress{};
socklen_t clientAddressLength = sizeof(clientAddress);
int clientSocket = accept(serverSocket, (struct sockaddr *)&clientAddress, &clientAddressLength);
if (clientSocket == -1) {
std::cerr << "Failed to accept connection" << std::endl;
continue;
}
std::cout << "Client connected" << std::endl;
// 处理客户端请求
char buffer[1024];
ssize_t bytesRead = read(clientSocket, buffer, sizeof(buffer));
if (bytesRead == -1) {
std::cerr << "Failed to read from socket" << std::endl;
close(clientSocket);
continue;
}
// 打印客户端发送的消息
std::cout << "Received message from client: " << buffer << std::endl;
// 发送响应给客户端
const char *response = "Hello from server";
ssize_t bytesSent = write(clientSocket, response, strlen(response));
if (bytesSent == -1) {
std::cerr << "Failed to write to socket" << std::endl;
}
// 关闭连接
close(clientSocket);
std::cout << "Client disconnected" << std::endl;
}
// 关闭服务器socket
close(serverSocket);
return 0;
}
这段代码创建了一个简单的TCP服务器,监听端口8888。它接受客户端连接,读取客户端发送的消息,然后向客户端发送一个固定的响应消息。请注意,这只是一个基本示例,并没有处理并发连接和其他错误处理。在实际生产环境中,您可能需要添加更多的代码来处理这些情况
原文地址: https://www.cveoy.top/t/topic/igAg 著作权归作者所有。请勿转载和采集!