1

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

我不知道如何处理这个。我是否应该制作一个类似的系统:
- 所有客户端都连接在同一个端口上:XXXX;
- 客户的第一个数据包指定他想要的端口;
- 服务器在新端口上绑定/侦听/接受;
- 服务器回答客户端没问题;
- 客户端停止连接 XXXX 端口并开始连接新端口。
我不知道这种系统好不好,但我不知道该怎么做。
谢谢你,弗洛里安

4

2 回答 2

1

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

于 2012-12-17T15:14:53.180 回答
0

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

无论如何,如果你有正确的框架,监听多个端口并不是特别棘手。libevent是您如何开始的一个示例。

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

于 2012-12-17T14:48:22.970 回答