自学内容网 自学内容网

【C语言实现TCP客户端】

Question

C语言实现TCP客户端

Answer

下面是一个简单的 C 语言实现的 TCP 客户端示例。这个客户端将连接到指定的服务器地址和端口,并发送一条消息,然后接收服务器返回的消息。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>

#define SERVER_IP "127.0.0.1" // 服务器 IP 地址
#define SERVER_PORT 8080       // 服务器端口
#define BUF_SIZE 1024          // 缓冲区大小

int main() {
    int sock;
    struct sockaddr_in server_addr;
    char send_buf[BUF_SIZE];
    char recv_buf[BUF_SIZE];

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

    // 设置服务器地址结构体
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(SERVER_PORT);
    
    // 将 IP 地址转换为二进制格式
    if (inet_pton(AF_INET, SERVER_IP, &server_addr.sin_addr) <= 0) {
        perror("Invalid address/ Address not supported");
        close(sock);
        exit(EXIT_FAILURE);
    }

    // 连接到服务器
    if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("Connection failed");
        close(sock);
        exit(EXIT_FAILURE);
    }

    // 发送消息
    printf("请输入要发送的消息: ");
    fgets(send_buf, BUF_SIZE, stdin);
    send(sock, send_buf, strlen(send_buf), 0);

    // 接收回复
    int bytes_received = recv(sock, recv_buf, BUF_SIZE - 1, 0);
    if (bytes_received < 0) {
        perror("Receive failed");
    } else {
        recv_buf[bytes_received] = '\0'; // 添加字符串结束符
        printf("收到服务器回复: %s\n", recv_buf);
    }

    // 关闭 socket
    close(sock);
    return 0;
}

如何编译和运行

  1. 将上述代码保存为 tcp_client.c
  2. 在终端中使用以下命令编译代码:
    gcc tcp_client.c -o tcp_client
    
  3. 运行客户端程序:
    ./tcp_client
    

请确保在运行客户端之前,服务器端已经运行并监听指定的 IP 地址和端口。这只是一个简单的示例,你可以根据需求进行扩展和修改。


原文地址:https://blog.csdn.net/m0_45463480/article/details/142885865

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!