从SFML插座接收数据时随机输出

Random output when receiving data from SFML socket

本文关键字:随机 输出 数据 SFML 插座      更新时间:2023-10-16

在运行此代码时,输入'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");
}

输入C

时随机输出

您可能需要将其作为错误处理。发生的事情是connect()send()receive()都失败了,但您没有检查返回值。此外,您可能需要将received归零,并检查在使用缓冲区打印之前实际收到的东西。 &ndash;&nbsp; sean cline