我不明白(tcp-)端口是如何工作的(在sfml中)。
根据我的理解,sf::TcpListener
是sf::TcpSocket
除了接受连接之外无法真正发送或接收数据。
假设我在不同的端口上有多个监听器:把它们想象成我的游戏客户端(第一个端口)和配置工具(第二个端口),我现在正在写。
我希望以不同的方式处理sf::Packet
,具体取决于我收到的端口。
但问题是:我不知道连接是如何工作的,但我想它必须分配一个不同的端口(否则我将有两个客户端都运行在连接到同一端口的localhost上)。所以我再也不能switch
在港口了。
有什么方法可以从sfml
客户端的实现中接收到有意连接到哪个端口的信息?
是否有一种算法可以用来确定它是哪个端口(当前端口靠近故意端口或类似的东西)?
我是否需要将其存储在struct
之类的
struct wrapped_socket
{
uint16_t intentional_port;
sf::TcpSocket socket;
};
这需要更改我当前的服务器代码库(致电wrapped_socket::socket->send()
而不是socket->send
,或
我没有想到更好,更直接的解决方案吗?
非常感谢任何帮助。
答案 0 :(得分:1)
您有两个不同的sf::TcpListener
个对象。检查第一个侦听器对象上的连接,并将这些连接放在一个集合中。然后检查第二个侦听器对象上的连接,并将这些连接放在第二个集合中。
这样连接是分开的,因此可以相应地处理。