sfml中连接客户端的端口

时间:2014-07-03 14:16:28

标签: c++ tcp sfml

我不明白(tcp-)端口是如何工作的(在sfml中)。

根据我的理解,sf::TcpListenersf::TcpSocket除了接受连接之外无法真正发送或接收数据。

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

我希望以不同的方式处理sf::Packet,具体取决于我收到的端口。

但问题是:我不知道连接是如何工作的,但我想它必须分配一个不同的端口(否则我将有两个客户端都运行在连接到同一端口的localhost上)。所以我再也不能switch在港口了。

  • 有什么方法可以从sfml客户端的实现中接收到有意连接到哪个端口的信息?

  • 是否有一种算法可以用来确定它是哪个端口(当前端口靠近故意端口或类似的东西)?

  • 我是否需要将其存储在struct之类的

    struct wrapped_socket { uint16_t intentional_port; sf::TcpSocket socket; };

    这需要更改我当前的服务器代码库(致电wrapped_socket::socket->send()而不是socket->send,或

  • 我没有想到更好,更直接的解决方案吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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