5

tcp大文件传输,全部write成功,read接收到部分后阻塞

tcp大文件传输,全部write成功,read接收到部分后阻塞。
小文件传输没问题。

 //传输数据结构体
typedef struct ResponeBody{
    int packindex;//4 byte
    char type;//2 byte
    char status;//2 byte
    int datalen;//4 byte
    int datatotal;//4 byte
    char s_arg[24];//24 byte
    char data[SIZE_DATA];
}ResponeBody;
//发送数据
 while((num = read(fd, resp.data, SIZE_DATA)) > 0)
{
    resp.type = getData;
    resp.status = 1;
    resp.datalen = num;
    res = my_write(socket, &resp, SIZE_RESP);
    if(res < 0){
        return -1;
    }
    memset(&resp, 0, SIZE_RESP);
}
close(fd);
//读取数据
int ret = -1;
while(1){
    num = read(socket, &resp, SIZE_RESP);
    if(num <= 0 || len_recv >= datatotal){
        printf("get success\n");
        ret = 0;
        break;
    }
    if(0 == resp.status || resp.type != getData){
        ret = -1;
        break;
    }
    write(fd, resp.data, resp.datalen);
    len_recv += num-SIZE_INFO;
    printf("get ----[%2.2f%%]----\n", len_recv/(double)datatotal * 100);
    memset(&resp, 0, SIZE_RESP);
} 
查看全部
ReturningProdigal
returningprodigal
2018/01/06 04:41
  • tcp
  • 文件传输
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

5个回复