gpt4 book ai didi

c - 在 C 中通过套接字发送大文件

转载 作者:IT王子 更新时间:2023-10-29 00:58:33 24 4
gpt4 key购买 nike

我正在为一个学校项目编写一个简单的 FTP 服务器。项目快完成了,我遇到的唯一问题是通过套接字向客户端发送文件。我无法向套接字写入超过 200kb 的数据,小文件已成功下载。谁能告诉我通过 Linux 套接字发送大文件的正确方法是什么?

提前致谢。

PS 我正在使用 C 和 32 位 linux,服务器在 PORT 模式下工作,一直在使用低级别的打开、写入、读取和其他功能,如 sendfile、send、sendto。

最佳答案

您可以映射文件并将其写入套接字,您也可以使用 fstat 获取其大小,如下所示:

fd = open(filename, O_RDONLY);
struct stat s;
fstat(fd, &s); // i get the size
adr = mmap(NULL, s.st_size, PROT_READ, MAP_SHARED, fd, 0); // i get the adress
write(socket, adr, s.st_size); // i send the file from this adress directly

在发送整个文件之前,您可能只想发送文件的大小。您的客户可能想向您发送消息说他的尺寸合适并且可以设法下载。

关于c - 在 C 中通过套接字发送大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com