я не понимаю, как работают (tcp-) порты (в sfml).
Насколько я понимаю, sf::TcpListener
— это sf::TcpSocket
, который на самом деле не может отправлять или получать данные, кроме приема соединений.
Предположим, у меня есть несколько слушателей на разных портах: думайте о них как о клиентах для моей игры (первый порт) и инструменте конфигурации (второй порт), который я пишу прямо сейчас.
Я хотел бы обрабатывать sf::Packet
по-разному в зависимости от того, какой порт я их получил.
Но вот проблема: я не знаю, как работает соединение, но я предполагаю, что оно должно назначать другой порт (иначе у меня было бы два клиента, работающих на локальном хосте, подключенных к одному и тому же порту). поэтому я больше не могу switch
на порту.
Есть ли способ получить информацию от реализации клиента в
sfml
, к какому порту он намеренно подключался?Есть ли алгоритм, который я могу использовать, чтобы определить, какой это был порт (текущий порт близок к преднамеренному порту или что-то в этом роде)?
Мне нужно сохранить это в
struct
какstruct wrapped_socket { uint16_t intentional_port; sf::TcpSocket socket; };
что потребует изменить мою текущую кодовую базу сервера (вызов
wrapped_socket::socket->send()
вместоsocket->send
илиЕсть ли лучшее, прямолинейное решение, о котором я не подумал?
Буду признателен за любую оказанную помощь.