小编por*_*803的帖子

知道客户端何时完成从 C 中的套接字读取

我正在用 c 编写一个客户端 - 服务器程序,我必须在其中将多个图像文件从服务器发送到客户端。服务器有什么办法可以知道客户端何时完成了从套接字的读取,在本地创建了图像文件并成功写入了吗?PS 我已经尝试向套接字发送消息,当我尝试从服务器读取套接字时,程序挂起。任何帮助都感激不尽。这是服务器代码中的一个函数,它将文件发送到套接字:

while(1)
{
  unsigned char buf[256] = {0};

  int n = fread(buf,1,256,fp);

  if(n>0) { send(sockfd,buf,n,0); }
  if(n<256) {
    if(feof(fp)) 
       printf("Sent to socket\n");
       break;
    }
  }
  fclose(fp);
}

char buf[5]
read(sockfd,buf,5);
if(strcmp(buf,"ready")==0) //send more files  
Run Code Online (Sandbox Code Playgroud)

这是客户端写入文件的函数:

 FILE* fp;
 fp = fopen(file_path,"ab");
 char buf[256];
 int num;
 int total=0;
 while(( num = recv(sockfd,buf,256,0))>0)
 {
  total+=num;
  fwrite(buf,1,num,fp);
 }

 fclose(fp);

 write(sockfd,"ready",5);

 }
Run Code Online (Sandbox Code Playgroud)

当我在一次文件传输后在服务器上进行读取时,程序挂起。

c sockets

4
推荐指数
1
解决办法
1755
查看次数

标签 统计

c ×1

sockets ×1