UDP套接字编程 - 两次打印数据

时间:2017-12-12 03:03:30

标签: c sockets udp

第二次调用recvfrom()时。它正在打印它收到的第1和第2个

recvfrom()第一次:这是握手

if ((recvMsgSize = recvfrom(sock,  recBuffer, MAXSIZE, 0,(struct sockaddr *) &clntAddr, &cliAddrLen)) < 0)
    DieWithError("recvfrom() failed") ;

printf("Received:");
for(i = 0; recBuffer[i] != '\0'; ++i)
    printf("%c",recBuffer[i]);
printf("\n");

/* Send response datagram back to the client */
unsigned char respBuffer[] = {255, 255, 255, 255, 4, 'Y', 'E', 'S'};
if (sendto(sock,  respBuffer, sizeof(respBuffer), 0, (struct sockaddr *) & clntAddr, sizeof(clntAddr)) < 0)
    DieWithError("sendto() failed");

recvfrom()第二次:

if ((recvMsgSize = recvfrom(sock,  rxBuf, RX_BUF_SIZE, 0,(struct sockaddr *) &clntAddr, &cliAddrLen)) < 0)
    DieWithError("recvfrom() failed") ;

    printf("Received Query:");
    for(j = 0; rxBuf[j] != '\0'; ++j)
        printf("%c",rxBuf[j]);
    printf("\n");

输出: 收到了:SNK? 收到查询:SNK? 收到的查询:一些数据!

PS:客户端正在发送SNK?只有一次。它工作正常。

我尝试使用memset()fflush()清除缓冲区。但它仍然印刷两者。 有人帮我摆脱这个问题。

谢谢

0 个答案:

没有答案