typedef struct train_s{
int dataLength;//发送的长度
char buf[1000];//发送的内容
}train_t;
ret = send(pTask->netFd,&t,sizeof(t.dataLength)+ t.dataLength,MSG_NOSIGNAL);
//自定义的接收函数
int recvn(int netFd, void *p, int n)
{
int total = 0;
int ret;
char *pTmp = (char *)p;
while (total < n)
{
//可能传输不稳定,while循环保证一定收满n大小
ret = recv(netFd, pTmp + total, n - total, 0);
ERROR_CHECK(ret, -1, "recv");
total += ret;
}
return 0;
}
//一次发送两次接收
int ret = recvn(pTask->netFd, &dataLength, sizeof(int)); //先收火车头
ERROR_CHECK(ret, -1, "recv");
ret = recvn(pTask->netFd, name, dataLength); //再收火车内容
ERROR_CHECK(ret, -1, "recv");