【问题标题】:Random output when receiving data from SFML socket从 SFML 套接字接收数据时随机输出
【发布时间】:2016-12-06 02:26:47
【问题描述】:

运行此代码时,我在输入“C”时收到完全随机的输出,而在输入“S”时没有任何反应。

非常感谢任何帮助!

#include <iostream>
#include <string>
#include <SFML/Network.hpp>

int main()
{
sf::IpAddress ip = sf::IpAddress::getLocalAddress();
sf::TcpSocket socket;
char connectionType, buffer[2000];
std::size_t received;

std::cout << "C for client, S for server" << std::endl;
std::cin >> connectionType;

std::string packetText = "test";

if (connectionType == 'S')
{
    sf::TcpListener listener;
    listener.listen(2000);
    listener.accept(socket);
}
else if (connectionType == 'C')
{
    socket.connect(ip, 2000);
}

socket.send(packetText.c_str(), packetText.length() + 1);
socket.receive(buffer, sizeof(buffer), received);
std::cout << buffer << std::endl;
system("pause");
}

random output when entering C

【问题讨论】:

  • 愚蠢的问题,但是您是先启动服务器,然后启动客户端吗?这个works for me.
  • 谢谢!启动服务器先修复它!
  • 酷!您可能希望将其作为错误处理。发生了什么是connect()、send() 和receive() 都失败了,但您没有检查返回值。此外,您可能希望将 received 清零,并在使用缓冲区打印之前检查您是否确实收到了一些东西。

标签: c++ sockets networking sfml


【解决方案1】:

您可能希望将其作为错误处理。发生了什么是connect()、send() 和receive() 都失败了,但您没有检查返回值。此外,您可能希望将received 归零,并在使用缓冲区打印之前检查您是否确实收到了一些东西。 ——肖恩·克莱恩

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2012-07-17
    • 2012-12-28
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多