linux 文件传输不完整,写了一个即时通讯工具,但在文件传输这块一直出现数据接收不完全...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

发送端代码:

case '1': /*好友同意接受*/

/*send file*/

memset(&Sendfile_message,'\0',sizeof(Sendfile_message));

Sendfile_message.guest_id=htonl(guest_ID);

Sendfile_message.peerid=Friend_msg.guest_id;

Sendfile_message.flag='c';

Sendfile_message.extra_infor[0]='0';

//while((nread=read(fd_pro.file_descriptor,Sendfile_message.message,100))>0)

while((nread=fread(Sendfile_message.message,sizeof(char),buffs,fp))>0)

{

//system("clear");

printf("%d\n",nread);

/*发送文件的内容*/

printf("%s\n",Sendfile_message.message);

nwrite=write(client_sockfd,&Sendfile_message,sizeof(Sendfile_message));

printf("%lf,%d",ntotal,(int)File_attr.file_state.st_size);

if(nwrite<=0)

{

perror("write error");

break;

}

ntotal+=nread;

snprintf(hints,sizeof(hints),"%4f",100*(ntotal/(int)File_attr.file_state.st_size));

gtk_progress_bar_set_text (GTK_PROGRESS_BAR(fd_pro.progressbar),hints);

gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(fd_pro.progressbar),ntotal/(int)File_attr.file_state.st_size);

gtk_widget_show_all(fd_pro.window);

memset(Sendfile_message.message,'\0',sizeof(Sendfile_message.message));

}

memset(Sendfile_message.message,'\0',buffs);

strcpy(Sendfile_message.message,"end"); /*sending end*/

nwrite=write(client_sockfd,&Sendfile_message,sizeof(Sendfile_message));

if(nwrite<=0)

{

perror("write error");

}

//close(fd_pro.file_descriptor); /*关闭文件描述符*/

fclose(fp);

gtk_widget_destroy(fd_pro.progressbar); /*删除发送文件的进度条*/

gtk_widget_destroy(fd_pro.window); /*关闭发送文件的窗口*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值