【问题标题】:SFML tcp server recieves messages with additionalsSFML tcp 服务器接收带有附加信息的消息
【发布时间】:2015-08-18 16:48:18
【问题描述】:

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

【问题讨论】:

    标签: c++ tcp server sfml


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      您的代码可能如下所示:

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

      注意到i的值没有被使用?那么printf 应该如何知道要打印多少字节呢?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 2017-09-01
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多