在Linux中用代码实现简单的TCP文件传输客户端
时间: 2024-02-12 16:22:49 浏览: 96
在 Linux 中使用代码实现简单的 TCP 文件传输客户端可以使用 C 语言和 Socket 编程来完成。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 8080
#define BUFF_SIZE 1024
int main() {
int sock = 0, valread;
struct sockaddr_in serv_addr;
char buffer[BUFF_SIZE] = {0};
FILE *file;
// 创建客户端的 socket
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
// 将 IP 地址从字符串转换为二进制形式
if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
perror("inet_pton failed");
exit(EXIT_FAILURE);
}
// 连接服务器端的 socket
if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
perror("connect failed");
exit(EXIT_FAILURE);
}
// 发送文件名给服务器端
char *filename = "example.txt";
send(sock, filename, strlen(filename), 0);
// 创建新文件以保存接收到的数据
file = fopen("received_file.txt", "wb");
if (file == NULL) {
perror("File creation failed");
exit(EXIT_FAILURE);
}
// 接收并写入文件内容
memset(buffer, 0, sizeof(buffer));
while ((valread = read(sock, buffer, BUFF_SIZE)) > 0) {
fwrite(buffer, 1, valread, file);
memset(buffer, 0, sizeof(buffer));
}
// 关闭连接和文件
close(sock);
fclose(file);
return 0;
}
```
这个例子演示了一个简单的 TCP 文件传输客户端的实现。它创建一个客户端的 socket,并连接到指定的服务器 IP 地址和端口。然后,它发送文件名给服务器端,并创建一个新文件用于保存接收到的数据。接下来,它接收服务器端发送的文件内容,并将内容写入文件中。
请注意,这只是一个简单的示例代码,没有进行错误处理和完整性检查。在实际应用中,你可能需要添加额外的逻辑来处理错误、检查文件是否存在、处理断点续传等功能。
阅读全文