gpt4 book ai didi

winsock - TCP IP recv() 函数未接收到来自服务器的回显消息

转载 作者:可可西里 更新时间:2023-11-01 02:52:03 25 4
gpt4 key购买 nike

我在 Windows 中使用 TCP IP 套接字程序,我在其中创建了一个客户端 用于将数据传输到服务器服务器 正在将消息回显给客户端(请注意,服务器 已通过 telnet 应用程序正常工作)。

但是当我从客户端发送测试消息时,它会在服务器端收到,但是当我试图在客户端中读取回显消息时> 使用 recv() 函数的一侧我没有得到回显消息,但是无论我在服务器 侧输入什么,它都会显示在客户端 侧接收 recv( ) 函数

我通过此链接关注程序 http://cs.baylor.edu/~donahoo/practical/CSockets/code/TCPEchoClientWS.c

有人有什么解决办法吗?

最佳答案

这一行是错误的:

if ((bytesRcvd = recv(sock, echoBuffer, RCVBUFSIZE - 1, 0)) <= 0)

套接字处于阻塞模式,上面的行在接近消息末尾时尝试读取过多数据,因此如果它没有收到预期的数据,它将阻塞。

试试这个:

if ((bytesRcvd = recv(sock, echoBuffer, min(echoStringLen - totalBytesRcvd, RCVBUFSIZE), 0)) <= 0)

然后改变这个:

echoBuffer[bytesRcvd] = '\0';  /* Add \0 so printf knows where to stop */
printf("%s", echoBuffer); /* Print the echo buffer */

因此改为:

/* Specify bytes read so printf knows where to stop */
printf("%*s", bytesRcvd, echoBuffer); /* Print the echo buffer */

关于winsock - TCP IP recv() 函数未接收到来自服务器的回显消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com