#include #include #include <sys/socket.h> #include <arpa/inet.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);

// 绑定 socket 到指定的地址和端口
if (bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) < 0) {
    std::cerr << 'Failed to bind socket.' << std::endl;
    return -1;
}

// 监听连接
if (listen(serverSocket, 3) < 0) {
    std::cerr << 'Failed to listen.' << std::endl;
    return -1;
}

std::cout << 'Waiting for incoming connections...' << std::endl;

// 接受客户端连接
int clientSocket = accept(serverSocket, nullptr, nullptr);
if (clientSocket < 0) {
    std::cerr << 'Failed to accept connection.' << std::endl;
    return -1;
}

std::cout << 'Client connected.' << std::endl;

// 发送和接收数据
char message[1024];
std::string reply;
while (true) {
    memset(message, 0, sizeof(message));
    if (read(clientSocket, message, sizeof(message)) < 0) {
        std::cerr << 'Failed to receive message.' << std::endl;
        break;
    }
    std::cout << 'Client: ' << message << std::endl;

    std::cout << 'Server: ';
    std::getline(std::cin, reply);
    if (write(clientSocket, reply.c_str(), reply.size()) < 0) {
        std::cerr << 'Failed to send message.' << std::endl;
        break;
    }
}

// 关闭 socket 连接
close(clientSocket);
close(serverSocket);

return 0;

}

以上代码是一个简单的 TCP 服务器示例,它会监听本地 8888 端口的连接请求,并与客户端进行简单的文本通信。当客户端发送消息时,服务器会将其打印出来,并等待用户输入回复,然后将回复发送给客户端。

请注意,此代码仅作为示例,可能不具备完整的错误处理和容错机制,以及其他必要的处理逻辑。在实际应用中,可能需要根据具体需求进行修改和完善。

C++ Socket 编程示例:实现简单的 TCP 服务器

原文地址: https://www.cveoy.top/t/topic/o0Ne 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录