TCP套接字连接到两个不同端口上的服务器

时间:2012-10-01 13:42:01

标签: c# sockets tcp proxy

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

端口80用于为HTML页面提供服务,其中端口8081用于将数据流式传输到客户端。

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您需要停止将您的程序视为服务器。收到连接后,读取数据,并确定将其发送到哪个端口,换档并开始以客户端的方式运行。

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

答案 2 :(得分:0)

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

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

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