1

我有一个自定义 TCP 服务器在端口 5888(虚拟端口)上侦听。代理服务器侦听传入连接。当代理接收到某些页面的 HTTP 请求时,它应该将其中继到主服务器的 80 端口。对于其他页面请求,代理需要将数据发送到主服务器的 8081 端口。

端口 80 用于服务 HTML 页面,而端口 8081 用于将数据流式传输到客户端。

我能够接收代理上的传入连接,然后从客户端读取数据。读取数据后,我可以确定连接到主服务器上的哪个端口来发送数据。

我一直在决定如何连接 2 个端口以将数据从客户端发送到主服务器?

4

3 回答 3

1

在这种情况下,您需要 2 个套接字连接对象到不同端口上的同一 IP(这是合法的),或者您有一个连接对象根据您必须处理的端口重新连接。

根据您必须切换连接的频率,后一个版本可能会产生巨大的开销,而第一个版本允许您几乎同时将数据发送到两个端口。

于 2012-10-01T13:49:17.310 回答
0

您需要停止将您的程序视为服务器。收到连接后,读取数据,并决定将其发送到哪个端口,换档并开始像客户端一样操作。

只需在端口 80 或 8081 上打开到“localhost”的新连接,然后重新发送您收到的数据,就好像您是原始客户端一样。

于 2012-10-01T13:55:25.120 回答
0

您的客户端连接到端口 5888 上的代理服务器,因此无论您从哪个真实服务器(Web 或流媒体)获取数据,您都将仅使用端口 5888 将数据提供给客户端。

这似乎是一个不太实际的解决方案。我在这里假设您正在尝试实现一种控制端口和数据端口结构,其中一个端口控制来自另一个端口的流。

只需创建两个套接字就足以从两个服务器获取数据。在这里,您必须手动创建一个您的客户端可以理解的协议,因为您将使用单端口向客户端提供 html 和流数据。

于 2012-10-01T14:02:27.313 回答