64,663
社区成员
发帖
与我相关
我的任务
分享
result=connect(sockfd,(struct sockaddr*)&address,len);
if(result==-1)
{
perror("connect failed!");
close(sockfd);
exit(-1);
}
FILE* fp=fopen(name,"rb");
if(fp==NULL)
{
perror("open file failed");
close(sockfd);
exit(-1);
}
send_file(buffer,sockfd,fp);//自定义发送文件函数,调用send
recv(sockfd,returned_id,sizeof(returned_id),0);
{
...
if(recv_file(path,sockfd)==-1)
{
perror("receive file failed");
close(sockfd);
pthread_exit(NULL);
}
//process the received file
send(sockfd,result,10,0);
...
}
int recv_file(char* path,int client_sockfd)
{
FILE* fp;
int read_length;
char buffer[1024];
fp=fopen(path,"wb");
if(fp==NULL)
{
perror("Open file failed");
return -1;
}
while((read_length=recv(client_sockfd,buffer,1023,0))>0)//阻塞的位置
{
client_sockfd, read_length);
buffer[read_length]='\0';
fwrite(buffer,1,read_length,fp);
}
fclose(fp);
printf("write to file %s\n",path);
return 0;
}