C++ sfml中已连接客户端的端口
我不理解(tcp-)端口如何工作(在sfml中) 根据我的理解,一个C++ sfml中已连接客户端的端口,c++,tcp,sfml,C++,Tcp,Sfml,我不理解(tcp-)端口如何工作(在sfml中) 根据我的理解,一个sf::TcpListener是一个sf::TcpSocket除了接受连接之外,不能真正发送或接收数据 让我们假设我在不同的端口上有多个侦听器:把它们想象成我的游戏客户端(第一个端口)和我正在编写的配置工具(第二个端口) 我希望根据接收到的端口不同,以不同的方式处理sf::Packets 但问题是:我不知道connect是如何工作的,但我想它必须分配一个不同的端口(否则我会让两个客户端都在本地主机上运行,并连接到同一个端口)。因
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
-语句即可但我认为多个集合会完全破坏它,我只是对所有集合进行迭代并调用相应的处理程序。再次感谢。--你对我的假设(不同的端口)是否正确有什么看法?