【发布时间】:2015-08-18 16:48:18
【问题描述】:
我使用 SFML2.3.1 包中的服务器示例代码。如果我从任何其他应用程序(TCP 客户端)发送消息,我将在此屏幕上收到带有附加信息的消息:http://s21.postimg.org/yh0r0c0cn/example.jpg
【问题讨论】:
我使用 SFML2.3.1 包中的服务器示例代码。如果我从任何其他应用程序(TCP 客户端)发送消息,我将在此屏幕上收到带有附加信息的消息:http://s21.postimg.org/yh0r0c0cn/example.jpg
【问题讨论】:
您打印的字节数可能多于收到的字节数。如果你使用 TcpSocket 的接收,它需要第三个参数引用 size_t,这样你就可以知道你得到了多少数据。检查this
【讨论】:
您正在打印未收到的数据。记录您收到的字节数,您会发现它小于您打印的字节数。
您的代码可能如下所示:
int i = recv (sockfd, buf, sizeof(buf));
printf ("Got: %s\n", buf);
注意到i的值没有被使用?那么printf 应该如何知道要打印多少字节呢?
请注意,这可能只是冰山一角。 TCP 不是消息协议,但您认为您正在发送消息。这可能表明未能实际设计和实现消息协议,这是不熟悉 TCP 的人常犯的错误。 TCP 是一种字节流协议。如果你想要一个消息协议,你必须在上面实现一个。
【讨论】: