一个使用C++语言编写的简单的Socket服务端示例:
- #include <iostream>
- #include <sys/socket.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <cstring>
- int main()
- {
- int serverSocket, clientSocket;
- struct sockaddr_in serverAddr, clientAddr;
- // 创建套接字
- serverSocket = socket(AF_INET, SOCK_STREAM, 0);
- if (serverSocket == -1) {
- std::cerr << "Failed to create socket." << std::endl;
- return 1;
- }
- // 设置服务器地址
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_addr.s_addr = INADDR_ANY;
- serverAddr.sin_port = htons(8080); // 使用8080端口
- // 绑定套接字
- if (bind(serverSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr)) == -1) {
- std::cerr << "Failed to bind socket." << std::endl;
- return 1;
- }
- // 监听连接
- if (listen(serverSocket, 3) == -1) {
- std::cerr << "Failed to listen." << std::endl;
- return 1;
- }
- std::cout << "Server running. Waiting for connections..." << std::endl;
- socklen_t addrSize = sizeof(struct sockaddr_in);
- // 接受连接
- clientSocket = accept(serverSocket, (struct sockaddr *) &clientAddr, &addrSize);
- if (clientSocket == -1) {
- std::cerr << "Failed to accept connection." << std::endl;
- return 1;
- }
- char buffer[1024];
- memset(buffer, 0, sizeof(buffer));
- // 从客户端接收数据
- ssize_t bytesRead = read(clientSocket, buffer, sizeof(buffer) - 1);
- if (bytesRead == -1) {
- std::cerr << "Failed to read data from socket." << std::endl;
- return 1;
- }
- std::cout << "Received message: " << buffer << std::endl;
- // 发送响应给客户端
- const char *response = "Hello from server!";
- ssize_t bytesSent = write(clientSocket, response, strlen(response));
- if (bytesSent == -1) {
- std::cerr << "Failed to send response." << std::endl;
- return 1;
- }
- // 关闭套接字
- close(clientSocket);
- close(serverSocket);
- return 0;
- }
上述代码创建一个基于TCP的Socket服务器,监听本地的8080端口。它接受客户端的连接,接收客户端发送的消息,并向客户端发送响应消息。
请注意,这只是一个简单的示例,并没有进行错误处理或处理多个并发连接。在真实的项目中,为了提高性能和可靠性,可能需要添加更多的逻辑和处理。
编译并运行以上代码,它将在终端中显示正在运行,并等待来自客户端的连接。可以使用telnet或其他Socket客户端工具来向该服务器发送连接请求和消息。成功连接后,服务器会读取客户端发送的消息并发送响应消息。
"小礼物走一走,来肥宅自学平台支持我"
评论区
共条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~
首页上页1下页尾页