免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 16708 | 回复: 15
打印 上一主题 下一主题

socket编程如何传送图片文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-02 16:31 |只看该作者 |正序浏览
下面这段代码表示我的大概思路:
File *fp = fopen("stefanie.jpg", "r");
char buf[BUFFSIZE];
while (fgets(buf, BUFFSIZE, fp) != NULL) {
    send(sockfd, buf, strlen(buf), 0);
}

测试的时候有问题,474K的图像每次只能传91K就停了,这是什么原因呢?解决办法是什么?

论坛徽章:
0
16 [报告]
发表于 2009-09-15 07:44 |只看该作者
struct file
{
char filecontent[SIZE];//存储读取的内容
int readsize;//读取内容的大小
}file1;
...
int fd;
fread(file1,readsize,number,fd);//number为在一个文件里读取大小为readsize的内容的数目

论坛徽章:
0
15 [报告]
发表于 2009-04-03 15:23 |只看该作者
learning ~

论坛徽章:
0
14 [报告]
发表于 2009-04-03 14:28 |只看该作者

回复 #11 gawk 的帖子

freed我试了很久,还是没搞定,如果方便的话,你能不能写个实例

论坛徽章:
0
13 [报告]
发表于 2009-04-03 14:25 |只看该作者

回复 #12 converse 的帖子

有道理,这是一个极其简单的web server,读文件没有错,以前用fgets来传送图片文件,有点可笑,现在用mmap把图片文件映射到内存,然后用send发送之,浏览器可以显示服务器传过来的图片,说明图片成功的传到客户端,就是觉得用mmap比较别扭。

论坛徽章:
0
12 [报告]
发表于 2009-04-03 13:56 |只看该作者
实际上你这个问题可以分解,问题可能出在两个地方:可能是读文件出错了,可能是发送图片数据出错了.
你可以首先验证第一个问题,验证的方法就是读文件之后写入另一个文件,看是不是正常;
第一个验证通过了,再去验证第二个问题.

要学会将你的问题进行分析,逐个解决.

论坛徽章:
0
11 [报告]
发表于 2009-04-03 13:27 |只看该作者
用fread吧

论坛徽章:
0
10 [报告]
发表于 2009-04-03 11:06 |只看该作者
对对,都是文件,是我开始用fgets传文本文件,然后又想如何传图片文件,才说昏了,mmap是不用区分文本文件和二进制文件的。
不知道mmap的效率怎么样?还有没有其它方法可以从服务器向客户端传文件?

论坛徽章:
0
9 [报告]
发表于 2009-04-03 10:52 |只看该作者
哥哥啊,图片不是文件么,二进制还有搞不定的文件么

论坛徽章:
0
8 [报告]
发表于 2009-04-03 10:30 |只看该作者

你知道啥是图片文件不?
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP