ZBLOG

写一个TCP client

下面是一个简单的 TCP 客户端示例代码,使用 C 语言编写。这个客户端将连接到指定的 TCP 服务器,并发送消息,然后接收服务器的回显。

TCP Client 示例

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

#define PORT 8080    // 服务器端口
#define BUF_SIZE 1024 // 缓冲区大小

int main() {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char buffer[BUF_SIZE] = {0};

    // 创建 socket 文件描述符
    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        printf("Socket creation error \n");
        return -1;
    }

    serv_addr.sin_family = AF_INET; // IPv4
    serv_addr.sin_port = htons(PORT); // 设置服务器端口号

    // 将 IPv4 地址从文本转换为二进制格式
    if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
        printf("Invalid address/ Address not supported \n");
        return -1;
    }

    // 尝试连接到服务器
    if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
        printf("Connection Failed \n");
        return -1;
    }

    printf("Connected to server\n");

    while (1) {
        printf("Enter message: ");
        fgets(buffer, BUF_SIZE, stdin); // 从标准输入读取消息
        
        send(sock, buffer, strlen(buffer), 0); // 向服务器发送消息

        int valread = read(sock, buffer, BUF_SIZE); // 从服务器接收回显数据
        if(valread > 0){
            buffer[valread] = '\0'; // 确保字符串以 null 字符结束
            printf("Server replied: %s", buffer);
        }
        
        memset(buffer, 0, BUF_SIZE); // 清空缓冲区以便下次使用
    }

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

编译和运行

  1. 将上述代码保存为 tcp_client.c
  2. 使用以下命令编译:
    
    gcc tcp_client.c -o tcp_client
    
  3. 在你运行客户端之前,请确保 TCP 服务器已经在运行(请参考之前提供的 TCP Server 示例)。
  4. 然后运行客户端:
    
    ./tcp_client
    

使用示例

当客户端运行后,你可以输入一些文本并按 Enter 键,它会发送该文本到正在运行的 TCP 服务器,并显示从服务器接收到的回显。

注意事项

  • 确保你的防火墙设置允许通过指定端口(本例中是8080)的流量。
  • 本代码没有实现错误处理及网络连接断开等复杂情况处理,适合基础学习和演示用途。在实际应用中需要添加更完善的错误处理机制。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7752

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?