以C语言形式客户端下载文件 1.char* fgets(name, sizeof(name), stdin);获取文件名 2.send_message(sfd,name,sizeof(name)); recv(sfd, buff, sizeof(buff), 0); 判断是否有该文件,如果没有则将该文件名发送回来; 3.fd = open(name, O_WRONLY|O_CREAT|O_TRUNC, 0664)如果有打开创建同名文件 4.recv(sfd, buff, sizeof(buff), 0);循环接收文件信息 5.write(fd, buff, res);将接收到的信息写入文件中
时间: 2023-11-26 12:05:08 浏览: 84
如何用c语言给一个文件加密.rar_加密_文件加密_文件加密 c++
下面是一个简单的C语言客户端下载文件的示例代码:
```c
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <fcntl.h>
int main() {
int sfd = socket(AF_INET, SOCK_STREAM, 0); // 创建套接字
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8080); // 服务器端口号
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 服务器IP地址
connect(sfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); // 连接服务器
char name[256];
printf("请输入要下载的文件名:");
fgets(name, sizeof(name), stdin); // 获取文件名
send(sfd, name, sizeof(name), 0); // 发送文件名给服务器
char buff[1024];
recv(sfd, buff, sizeof(buff), 0); // 接收服务器返回的信息
if (strcmp(buff, "File not found") == 0) { // 判断是否有该文件
printf("文件不存在!\n");
return 0;
}
int fd = open(name, O_CREAT | O_WRONLY | O_TRUNC, 0664); // 打开文件
while (1) {
int res = recv(sfd, buff, sizeof(buff), 0); // 循环接收文件信息
if (res == 0) break; // 如果接收到的数据为0,则表示文件接收完毕
write(fd, buff, res); // 将接收到的信息写入文件中
}
printf("文件下载成功!\n");
close(fd); // 关闭文件
close(sfd); // 关闭套接字
return 0;
}
```
这个程序通过套接字连接服务器,获取要下载的文件名,并将其发送给服务器。服务器接收文件名后,判断是否有该文件,如果有则打开文件并将其内容发送到客户端。客户端接收到文件内容后,将其写入同名文件中。最后,客户端关闭文件和套接字,完成文件下载。
阅读全文