C++ socket编程基础_C++ TCP客户端与服务器通信实现

admin 百科 13
C++中TCP通信通过socket实现,服务器创建套接字、绑定端口、监听并接受连接,客户端连接后双方收发数据。1. 服务器流程:创建socket→bind→listen→accept→recv/send→close;2. 客户端流程:创建socket→connect→send/recv→close。代码示例展示了服务器监听8080端口,客户端发送"Hello from client",服务器接收并返回"Message received"。编译使用g++ server.cpp -o server和g++ client.cpp -o client,先运行服务器再启动客户端即可完成通信。

C++ socket编程基础_C++ TCP客户端与服务器通信实现-第1张图片-佛山资讯网

C++ 中的 socket 编程是实现网络通信的基础,尤其在 TCP 协议下,客户端与服务器之间的稳定连接可以用于传输大量可靠数据。本文将介绍如何使用 C++ 实现一个简单的 TCP 客户端与服务器通信程序,适用于 Linux 环境(如 Ubuntu、CentOS),基于 BSD socket 接口。

1. TCP 通信的基本流程

TCP 是面向连接的协议,通信前必须建立连接。服务器监听端口,客户端发起连接请求,成功后双方通过套接字进行数据读写。

服务器端流程:

  • 创建 socket
  • 绑定地址和端口(bind)
  • 监听连接(listen)
  • 接受客户端连接(accept)
  • 接收和发送数据(recv / send)
  • 关闭连接

客户端流程:

立即学习“C++免费学习笔记(深入)”;

  • 创建 socket
  • 连接服务器(connect)
  • 发送和接收数据(send / recv)
  • 关闭连接

2. 服务器端代码实现

以下是一个简单的 TCP 服务器示例,监听本地 8080 端口,接收客户端消息并返回响应。

#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int addrlen = sizeof(address);
    char buffer[1024] = {0};
    const char *response = "Message received";

    // 创建 socket
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }

    // 配置地址结构
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(8080);

    // 绑定
    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
        perror("bind failed");
        close(server_fd);
        exit(EXIT_FAILURE);
    }

    // 监听
    if (listen(server_fd, 3) < 0) {
        perror("listen");
        close(server_fd);
        exit(EXIT_FAILURE);
    }

    std::cout << "Server listening on port 8080...\n";

    // 接受连接
    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
        perror("accept");
        close(server_fd);
        exit(EXIT_FAILURE);
    }

    // 读取客户端消息
    read(new_socket, buffer, 1024);
    std::cout << "Client: " << buffer << std::endl;

    // 发送响应
    send(new_socket, response, strlen(response), 0);
    std::cout << "Response sent\n";

    // 关闭连接
    close(new_socket);
    close(server_fd);
    return 0;
}

登录后复制

3. 客户端代码实现

客户端连接到服务器,发送一条消息,并接收服务器的响应。

标签: linux centos 端口 ubuntu ai c++ ios stream

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~