c++ - 从 SFML 套接字接收数据时的随机输出

标签 c++ sockets networking sfml

运行此代码时,输​​入“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

最佳答案

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

关于c++ - 从 SFML 套接字接收数据时的随机输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986827/

相关文章:

在客户端不关闭连接的情况下,C 套接字可以接收 0 字节吗?

networking - Centos 不像 Ubuntu 那样接收数据包 - 使用套接字

C++:越来越复杂的错误误导调试器

c++ - 函数 getValue(s) cplex c++ 的问题

c++ 埃拉托色尼筛法我的代码很慢

sockets - LINUX中套接字的Parial Write

javascript - 如何连接Websocket API?

c++ - 在不传输数据的情况下确定网络接口(interface)带宽/类型

iPhone 设备 - 连接到主机

c++ - 什么时候需要在 C++ 中使用 malloc?