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