C++ sfml中已连接客户端的端口

C++ sfml中已连接客户端的端口,c++,tcp,sfml,C++,Tcp,Sfml,我不理解(tcp-)端口如何工作(在sfml中) 根据我的理解,一个sf::TcpListener是一个sf::TcpSocket除了接受连接之外,不能真正发送或接收数据 让我们假设我在不同的端口上有多个侦听器:把它们想象成我的游戏客户端(第一个端口)和我正在编写的配置工具(第二个端口) 我希望根据接收到的端口不同,以不同的方式处理sf::Packets 但问题是:我不知道connect是如何工作的,但我想它必须分配一个不同的端口(否则我会让两个客户端都在本地主机上运行,并连接到同一个端口)。因

我不理解(tcp-)端口如何工作(在sfml中)

根据我的理解,一个
sf::TcpListener
是一个
sf::TcpSocket
除了接受连接之外,不能真正发送或接收数据

让我们假设我在不同的端口上有多个侦听器:把它们想象成我的游戏客户端(第一个端口)和我正在编写的配置工具(第二个端口)

我希望根据接收到的端口不同,以不同的方式处理
sf::Packet
s

但问题是:我不知道connect是如何工作的,但我想它必须分配一个不同的端口(否则我会让两个客户端都在本地主机上运行,并连接到同一个端口)。因此,我无法再在端口上切换

  • 是否有任何方法可以从
    sfml
    中的客户机实现接收到它有意连接到哪个端口的信息

  • 是否有一种算法可以用来确定它是哪个端口(当前端口接近目标端口或类似的情况)

  • 我需要将其存储在
    结构中吗

    struct-wrapped\u套接字
    {
    uint16_t故意_端口;
    sf::TcpSocket插座;
    };

    这将需要更改我当前的服务器代码库(调用
    wrapped\u socket::socket->send()
    ,而不是
    socket->send
    ,或者

  • 有没有我没有想到的更好、更直接的解决方案


非常感谢您的帮助。

您有两个不同的
sf::TcpListener
对象。您检查第一个侦听器对象上的连接,并将这些连接放入一个集合中。然后检查第二个侦听器对象上的连接,并将这些连接放入第二个集合中


这样,连接是分开的,因此可以进行相应的处理。

谢谢,我会这样做。我关于在一个集合中存储所有套接字的第一个想法是,在另一个端口上添加另一个处理程序几乎不需要代码更改,只需在其中放入另一个调用另一个han的
case
-语句即可但我认为多个集合会完全破坏它,我只是对所有集合进行迭代并调用相应的处理程序。再次感谢。--你对我的假设(不同的端口)是否正确有什么看法?