Кажется, что сокеты SFML подключаются, но когда данные извлекаются, это случайные символы. C

#c #network-programming #sfml

#c #сетевое программирование #sfml

Вопрос:

Я пытаюсь отправить данные из одной программы в другую на том же компьютере, используя сокеты и пакеты SFML. Я правильно следил за онлайн-уроками, я думаю, что это может быть что-то, не связанное с моим кодом, но подумал, что я проверю, чтобы убедиться, что я не делаю что-то неправильно.

Мой серверный код таков

 sf::TcpListener listenerSocket;
    if (listenerSocket.listen(1000) != sf::Socket::Done)
    {
        //error
    }

    sf::TcpSocket clients[2];

    while (true)
    {



        if (listenerSocket.accept(clients[0]) == sf::Socket::Done)
        {
            std::cout << "A client has joined the queuen";
            std::cout << "There are now 1 clientsn";
        }


        //ServerDataType playerData[2];
        sf::Packet serverData;
        sf::Uint8 mapSeed = rand() % 1000   1;
        sf::Uint8 player1ID = 1;
    
        serverData << player1ID << mapSeed;

        if (clients[0].send(serverData))
        {
            //error
        }

        

    }
 

Очевидно, что это не идеально, но я просто пытаюсь упростить проверку отправлений.
Мой клиентский код таков

     sf::Packet serverData;
    std::size_t received;
    sf::Uint8 mapSeed;
    sf::Uint8 playerID;

    sf::TcpSocket serverSocket;
    sf::Socket::Status status= serverSocket.connect("127.0.0.1", 1000);;

    while (status != sf::Socket::Done)
    {
        
        if (status != sf::Socket::Done)
        {
            //error...
        }
    }

    

    if(serverSocket.receive(serverData))
    {
        //error
    }

    serverData >> playerID >> mapSeed;
 

Мой вывод из cout

введите описание изображения здесь

Заранее спасибо.

Комментарии:

1. Вы не показываете, как вы выводите полученные данные

2. Извините, что он просто использует std::cout

3. Вы не должны cout использовать uint8