温馨提示×

CentOS C++网络编程基础

小樊
54
2025-09-07 20:17:52
栏目: 编程语言

CentOS C++网络编程基础

一、环境搭建

  1. 安装开发工具

    sudo yum groupinstall "Development Tools"  # 安装gcc、g++、make等  
    sudo yum install libevent-devel boost-devel  # 可选:安装高级网络库  
    
  2. 配置网络
    确保系统网络连通,可通过ping命令测试。

二、基础编程步骤(以TCP为例)

  1. 创建套接字

    int sockfd = socket(AF_INET, SOCK_STREAM, 0);  // AF_INET: IPv4, SOCK_STREAM: TCP  
    if (sockfd < 0) { perror("socket failed"); exit(-1); }  
    
  2. 绑定地址与端口

    struct sockaddr_in addr;  
    addr.sin_family = AF_INET;  
    addr.sin_addr.s_addr = INADDR_ANY;  // 监听所有IP  
    addr.sin_port = htons(8080);  // 端口号(需与服务器一致)  
    if (bind(sockfd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {  
        perror("bind failed"); exit(-1);  
    }  
    
  3. 监听与接受连接(服务器端)

    listen(sockfd, 3);  // 监听队列长度  
    int client_fd = accept(sockfd, NULL, NULL);  // 阻塞等待客户端连接  
    
  4. 数据收发

    char buffer[1024] = {0};  
    read(client_fd, buffer, sizeof(buffer));  // 接收数据  
    send(client_fd, "Hello from server", 18, 0);  // 发送数据  
    
  5. 关闭连接

    close(client_fd);  
    close(sockfd);  
    

三、关键注意事项

  • 错误处理:每次系统调用后需检查返回值,使用perror输出错误信息。
  • 端口权限:1024以下端口需root权限,建议测试时使用高端口(如8080)。
  • 防火墙:若无法通信,需检查firewalldiptables是否放行端口:
    sudo firewall-cmd --add-port=8080/tcp --permanent  
    sudo firewall-cmd --reload  
    

四、进阶方向

  • 多线程/异步IO:使用pthread库或Boost.Asio实现并发处理。
  • 协议扩展:学习UDP协议(SOCK_DGRAM)或HTTP协议(结合libcurl)。
  • 安全性:使用SSL/TLS加密通信(如OpenSSL库)。

五、测试工具

  • 客户端测试:用telnetnc命令模拟客户端连接:
    telnet 127.0.0.1 8080  
    
  • 抓包分析:用tcpdump查看网络数据包:
    sudo tcpdump -i lo port 8080 -n  
    

参考资料

0