第二次调用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()
清除缓冲区。但它仍然印刷两者。
有人帮我摆脱这个问题。
谢谢