Не ловит пакеты udp broadcast при общении между сервером и клиентом

Рейтинг: 0Ответов: 0Опубликовано: 18.08.2023

У меня есть небольшой сетевой код на c++ с использованием SFML 2.6 для одноразовой передачи пакетов в локальной сети. Однако, одно из устройств(ноутбук с linux mint), не получает пакеты от другого устройства(ПК с windows 10), если они отправлены в broadcast по айпи 255.255.255.255(его дал sf::IpAddress::Broadcast). Однако если ноутбук передает пакет, то он почти сразу приходит на ПК. При этом tcp-протокол работает корректно в обе стороны.

Сервер(линукс):

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

int main() {
    sf::UdpSocket socket;
    socket.bind(6885);
    std::cout << sf::IpAddress::getLocalAddress() << std::endl;

    char data[128];
    std::size_t received;
    sf::IpAddress remote;
    unsigned short port;
    socket.receive(data, 128, received, remote, port); //Не работает, если отправлено через broadcasting(на линуксе)
    std::cout << data[0];
    

    return 0;
}

Клиент(виндовс)

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

int main() {
    sf::UdpSocket socket;
    socket.bind(sf::Socket::AnyPort);
    unsigned short port = 6885;

    std::string data = "Hello, Server";
    socket.send(data.c_str(), data.size() + 1, sf::IpAddress::IpAddress("192.168.100.148"), port); //Работает корректно на обоих устройствах
    //socket.send(data.c_str(), data.size() + 1, sf::IpAddress::Broadcast, port); //Работает только если ноутбук отправляет ПК


    return 0;
}

Ответы

Ответов пока нет.