处理多个端口服务器

时间:2012-12-17 14:43:39

标签: c++ networking network-programming

我必须编写一个服务器,它必须接受他们指定的端口上的客户端 示例:A想要在端口1337上连接,因此服务器在端口1337上侦听。B在1992年,所以服务器在1992年听,等等...

我不知道如何处理这件事。 我应该制作一个类似的系统:
- 所有客户端都连接在同一端口上:XXXX;
- 客户端的第一个数据包指定了他想要的端口;
- 服务器在新端口上绑定/侦听/接受;
- 服务器回答客户端它没问题;
- 客户端停止在端口XXXX上连接并开始连接新端口 我不知道这种系统是否合适,但我无法弄清楚如何做到这一点 谢谢Florian

2 个答案:

答案 0 :(得分:1)

您需要某种主进程或中心表来保持空间到端口映射。您需要客户端连接到主进程或某种“入口室”以便首先连接。然后,当他们从一个房间移动到另一个房间时,只需查看他们需要连接的端口,并将它们引用到下一个端口。如果需要,所有中央信息都可以保存在数据库中。

答案 1 :(得分:0)

如果客户要传达有关其他端口的请求,则需要至少打开一个标准端口供客户端连接。它不必显然是开放的,它可以像一些ssh隐藏系统那样安静地接受UDP数据包。如果您愿意产生某种新端口绑定并准备就绪的响应,它也可以与TCP一起使用。

无论如何,如果你有合适的框架,那么监听多个端口并不是特别棘手。 libevent是一个如何开始的例子。

但是,打开一个标准端口以及一个未知数量的动态端口似乎很奇怪。你什么时候关闭这些?他们最终会超时吗?听力呼叫本质上只是短期的吗?