0

我正在 UNIX 中执行 TCP 套接字程序,但是当我执行读取/接收时,它总是返回相同的数据。服务器发送三个结构,我只一遍又一遍地阅读第一个

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

1 回答 1

0

您假设您已经在一次阅读中收到了整个结构。你不能这样假设。查看 read 返回的计数,然后循环直到你得到你需要的。

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

于 2013-11-04T22:05:13.390 回答