免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: fenglimei0907
打印 上一主题 下一主题

socket传送jpg不成功,郁闷。。。。求助!!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-01-10 23:22 |只看该作者
原帖由 fenglimei0907 于 2009-1-10 22:42 发表
回复3楼:多谢提醒,我把file_size-getnum和strlen都改成了1024,现在发送和接收的字节数都是正确的,但是接收后的文件大小是0字节,我还是看不出问题出在哪儿,难道fstream有什么问题吗?
回复4楼:多谢,您的 ...

这个应该直接打印接收到的值,而不是转换后的值
  databuf[nbytes]='\0';
                                 file_size=atol(databuf);
                                 printf("recv bytes = %d, filesize: %s\n",nbytes, databuf);

这个SERVER好像没有处理
     /*发出传送完毕信号*/
                 //  send(sockfd,"0",1,0);

楼主应该用二进制来传送文件大小,而不应在一个连接里一会传个字符串,一会传文件内容
因为虽然发送是分次的,但接收时却有可能是合并收到的

[ 本帖最后由 alpbrook 于 2009-1-10 23:25 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2009-01-11 09:52 |只看该作者

回复 #11 alpbrook 的帖子

问题解决了,谢谢大家帮助,是文件大小的问题导致的。多谢四楼的帮助啊,他提醒了我。
客户端:
          while(rfile.is_open())
                  {
                          memset(buffer,0,1024);
                          rfile.read(buffer,1024);
                    int readLen = rfile.gcount();
                    printf("send: %d bytes\n",readLen);
                    printf("send buffer: %d bytes\n",sizeof(buffer));
                   // strcpy(buffer,"dfdsd");
                                if(send(sockfd,buffer,readLen,0)==-1)
              {
                fprintf(stderr,"Write Error:%s\n",strerror(errno));
                exit(1);
              }
                    
                    if(rfile.eof())
                       break;
                  }
服务器:


        while((nbytes=recv(new_fd,databuf, 1024,0))>0)
        {
                printf("receive: %d bytes\n",nbytes);                       
                            printf("recv buffer: %d bytes\n",sizeof(databuf));               
                wfile.write(databuf, nbytes);   
                memset(databuf,0,1024);   
        }

[ 本帖最后由 fenglimei0907 于 2009-1-11 09:54 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2009-01-12 14:34 |只看该作者
原帖由 fenglimei0907 于 2009-1-11 09:52 发表
问题解决了,谢谢大家帮助,是文件大小的问题导致的。多谢四楼的帮助啊,他提醒了我。
客户端:
          while(rfile.is_open())
                  {
                          memset(buffer,0,1024);
                          rfile.read(buffer,1024);
                     ...

帮助你什么了? 说清楚,难道你没有连续读???还是怎么滴?让我自豪也明白点嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP