下面是一个简单的 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;
}
编译和运行
- 将上述代码保存为
tcp_client.c
。 - 使用以下命令编译:
gcc tcp_client.c -o tcp_client
- 在你运行客户端之前,请确保 TCP 服务器已经在运行(请参考之前提供的 TCP Server 示例)。
- 然后运行客户端:
./tcp_client
使用示例
当客户端运行后,你可以输入一些文本并按 Enter 键,它会发送该文本到正在运行的 TCP 服务器,并显示从服务器接收到的回显。
注意事项
- 确保你的防火墙设置允许通过指定端口(本例中是8080)的流量。
- 本代码没有实现错误处理及网络连接断开等复杂情况处理,适合基础学习和演示用途。在实际应用中需要添加更完善的错误处理机制。
内容由零声教学AI助手提供,问题来源于学员提问