TCP Echo在不同的适配器上

时间:2013-05-14 00:03:45

标签: c# sockets

我正在尝试为具有2个网络适配器(私有和公共)的计算机编写一个程序,该计算机将私有接收的数据回传给公众,反之亦然。我只需要它来监听两个特定的端口,更具体地说,它应该在Private上打开一个套接字服务器,在Public上打开一个套接字客户端。

Public上的计算机IP地址是192.168.1.21,私有的IP地址是172.16.13.1,所以我认为这样的东西会起作用:

IPEndPoint privateEndpoint1 = new IPEndPoint(IPAddress.Parse("172.16.13.1"), port1);
IPEndPoint privateEndpoint2 = new IPEndPoint(IPAddress.Parse("172.16.13.1"), port2);
IPEndPoint publicEndpoint1 = new IPEndPoint(IPAddress.Parse("192.168.1.21"), port1);
IPEndPoint publicEndpoint2 = new IPEndPoint(IPAddress.Parse("192.168.1.21"), port2);

TcpListener priList1 = new TcpListener(privateEndpoint1);
TcpListener priList2 = new TcpListener(privateEndpoint2);

TcpClient pubCli1 = new TcpClient(publicEndpoint1); //Error here
TcpClient pubCli2 = new TcpClient(publicEndpoint2);

然后我得到了流并做了实际的回声。

问题是我在标记的行上出现错误:

  

通常只允许使用每个套接字地址(协议/网络地址/端口)

错误似乎是IPEndPoint构造函数没有区分两个IP地址和两个网络适配器。我已经研究过使用普通Socket而不是TcpClient s,但这似乎没有改变任何内容。

0 个答案:

没有答案