SFML tcp服务器接收带附加信息的消息

时间:2015-08-18 16:48:18

标签: c++ tcp server sfml

我使用SFML2.3.1包中的服务器示例代码。如果我从任何其他应用程序(TCP客户端)发送消息,我将在此屏幕上收到附加信息:http://s21.postimg.org/yh0r0c0cn/example.jpg

2 个答案:

答案 0 :(得分:0)

您正在打印未收到的数据。记录您收到的字节数,您将看到它小于您打印的字节数。

您的代码可能如下所示:

int i = recv (sockfd, buf, sizeof(buf));
printf ("Got: %s\n", buf);

请注意,i的值未使用?那么printf如何知道要打印多少字节呢?

请注意,这可能只是冰山一角。 TCP不是消息协议,但您认为您正在发送消息。这可能表明实际设计和实现消息协议失败,这是不熟悉TCP的人常犯的错误。 TCP是字节流协议。如果你想要一个消息协议,你必须在顶部实现一个。

答案 1 :(得分:0)

您可能打印的字节数多于收到的字节数。如果你使用TcpSocket的接收,它需要对size_t的第三个参数引用,这样你就可以知道你得到了多少数据。检查this