我正在UNIX中执行TCP套接字程序,但是当我执行read / recv时,它总是返回相同的数据。服务器发送三个结构,我只能一遍又一遍地读取第一个结构
int n_aux = 1;
while(n_aux > 0)
{
struct trama mensajeaux;
n_aux = recv(socket_cliente, &mensajeaux, sizeof(struct trama), 0);
if(n_aux < 0)
{
printf("\nError al leer del buffer\n");
return -1;
}
printf("\nMensaje recibido, tipo: %d, n: %d, v: %d, c: %d, origen: %d\n", mensajeaux.tipo, mensajeaux.x, mensajeaux.y, mensajeaux.z, mensajeaux.origen);
}
答案 0 :(得分:0)
您假设您在一次阅读中收到了整个结构。你不能假设。查看read返回的计数,然后循环直到找到所需的数据。
BTW不要将结构用作网络协议。以八位字节定义有线协议并编写代码以发送和接收它。