套接字客户端反复读取相同内容

时间:2013-11-04 19:07:50

标签: sockets

我正在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);
}

1 个答案:

答案 0 :(得分:0)

您假设您在一次阅读中收到了整个结构。你不能假设。查看read返回的计数,然后循环直到找到所需的数据。

BTW不要将结构用作网络协议。以八位字节定义有线协议并编写代码以发送和接收它。