返回信息流遇到这样的问题:
主要是实现 服务器与客户端传文件的问题
当客户端把所需要的文件名发给服务端,此时 客户端recv(数据)
服务器收到文件名以后,fopen(文件名,"rb");然后服务器send(数据)
可是结果是服务器不断的发,客户端什么都没有接到。。。。
感觉应该涉及同步的问题,不知道怎么解决???
这是一条镜像帖。来源:北邮人论坛 / soft-design / #25956同步于 2008/6/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
新手求助:socket编程的问题
TLZL
2008/6/1镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
【 在 wks 的大作中提到: 】
: 这个简单的情形不需要同步。
: 仔细看看:你怎么知道服务器不断的发?发成功了吗?
: 客户端是怎么收的?实际收到了多少字节?
客户端没有接受到任何数据,停住了,服务端不停的发数据
客户端:
send(clientfd,rev[client_num].tt[file_num].xx,sizeof(rev[client_num].tt[file_num].xx),0);//发送文件名
int s;//接收数据
s=recv(clientfd,response,strlen(response),0);
while(s>0){
fwrite(response,s,1,f);
printf("接受到%d个字节\n",s);
memset(response,0,sizeof(response));
s=recv(clientfd,response,sizeof(response),0);
}//end with s>0
printf("接受到文件\n");
服务端:
recv(acceptfd,filename,strlen(filename),0);//获取文件名
strcat(wuyu,filename);
fp=fopen(wuyu,"rb");//打开文件
if(fp!=NULL)
printf("成功创建文件%s\n",path);
while(!feof(fp)){ //传文件
memset(temp,0,1024);
num=fread(temp,1024,1,fp);//读文件
count2=ftell(fp);
printf("读取文件元素个数%d\n",num);
send(clientfd,temp,count2-count1,0);
Sleep(100);
printf("发送%d字节\n",count2-count1);
count1=count2;
}//end with !feof(fp)
结果是 服务端不停的发,客户端recv(clientfd,response,strlen(response),0);都没有运行到