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);
}