肥宅自学平台_人人成为技术开发者

肥宅人只等待您,联系我们吧,曾经的巅峰是否能回来?我们正在用心服务!

如何用c++语言写个简单socket服务端

 更新时间:2023-12-19 15:39:43   作者:肥宅-季波   我要评论(0)  

         一个使用C++语言编写的简单的Socket服务端示例:
  1. #include <iostream>
  2. #include <sys/socket.h>
  3. #include <arpa/inet.h>
  4. #include <unistd.h>
  5. #include <cstring>
  6. int main()
  7. {
  8.     int serverSocket, clientSocket;
  9.     struct sockaddr_in serverAddr, clientAddr;
  10.     // 创建套接字
  11.     serverSocket = socket(AF_INET, SOCK_STREAM, 0);
  12.     if (serverSocket == -1) {
  13.         std::cerr << "Failed to create socket." << std::endl;
  14.         return 1;
  15.     }
  16.     // 设置服务器地址
  17.     serverAddr.sin_family = AF_INET;
  18.     serverAddr.sin_addr.s_addr = INADDR_ANY;
  19.     serverAddr.sin_port = htons(8080); // 使用8080端口
  20.     // 绑定套接字
  21.     if (bind(serverSocket, (struct sockaddr *) &serverAddr, sizeof(serverAddr)) == -1) {
  22.         std::cerr << "Failed to bind socket." << std::endl;
  23.         return 1;
  24.     }
  25.    
  26.     // 监听连接
  27.     if (listen(serverSocket, 3) == -1) {
  28.         std::cerr << "Failed to listen." << std::endl;
  29.         return 1;
  30.     }
  31.     std::cout << "Server running. Waiting for connections..." << std::endl;
  32.     socklen_t addrSize = sizeof(struct sockaddr_in);
  33.     // 接受连接
  34.     clientSocket = accept(serverSocket, (struct sockaddr *) &clientAddr, &addrSize);
  35.     if (clientSocket == -1) {
  36.         std::cerr << "Failed to accept connection." << std::endl;
  37.         return 1;
  38.     }
  39.     char buffer[1024];
  40.     memset(buffer, 0, sizeof(buffer));
  41.     // 从客户端接收数据
  42.     ssize_t bytesRead = read(clientSocket, buffer, sizeof(buffer) - 1);
  43.     if (bytesRead == -1) {
  44.         std::cerr << "Failed to read data from socket." << std::endl;
  45.         return 1;
  46.     }
  47.     std::cout << "Received message: " << buffer << std::endl;
  48.     // 发送响应给客户端
  49.     const char *response = "Hello from server!";
  50.     ssize_t bytesSent = write(clientSocket, response, strlen(response));
  51.     if (bytesSent == -1) {
  52.         std::cerr << "Failed to send response." << std::endl;
  53.         return 1;
  54.     }
  55.     // 关闭套接字
  56.     close(clientSocket);
  57.     close(serverSocket);
  58.     return 0;
  59. }

上述代码创建一个基于TCP的Socket服务器,监听本地的8080端口。它接受客户端的连接,接收客户端发送的消息,并向客户端发送响应消息。

请注意,这只是一个简单的示例,并没有进行错误处理或处理多个并发连接。在真实的项目中,为了提高性能和可靠性,可能需要添加更多的逻辑和处理。

编译并运行以上代码,它将在终端中显示正在运行,并等待来自客户端的连接。可以使用telnet或其他Socket客户端工具来向该服务器发送连接请求和消息。成功连接后,服务器会读取客户端发送的消息并发送响应消息。


"小礼物走一走,来肥宅自学平台支持我"
评论区

评论

共条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
客服中心在线客服
全心全意为平台用户服务
Copyright © 2017-2023 自学平台网站地图:去查看>
  • 肥宅人自己的自学平台
  • 人人都能成为平台讲师
  • 贡献你的力量壮大肥宅自学平台
  • 将自己的能力变现
  • 实现人生的第二职业
网址收藏平台安卓APP
微信公众号微信公众号

本站部分图片或者资源来自程序自动采集或卖家(商家)发布,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

肥宅自学教程网是一个主打IT视频教程、自媒体运行、摄影剪辑等内容的资源学习交流平台。