在C#中使用TCPClient / Socket时,指定要使用的出站IP地址。

11

我有一个服务器,其中网络适配器分配了几个IP地址。

在该服务器上有一个客户端应用程序,通过TCPClient连接到另一个服务器应用程序。对于所有的输出通信,我的服务器都使用默认的IP地址,然而对于这个应用程序,我想让输出通信使用另一个本地IP地址。

在通信时,是否可以指定另一个本地分配的IP地址?

我正在尝试让远程服务器应用程序认为它来自另一个IP地址,以便可以穿过防火墙等等......

提前感谢。

1个回答

19

你可以使用接受本地端点地址的TcpClient构造函数:

TcpClient c=new TcpClient(new System.Net.IPEndPoint(...));
例如:
TcpClient c=new TcpClient(new IPEndPoint(IPAddress.Parse("192.168.1.1"), 0);

参考:TcpClient 构造函数 (IPEndPoint)


谢谢,我错误地认为构造函数是远程主机的终点。顺便问一下,System.Net.Sockets.Socket类有类似的东西吗?它有一个LocalEndPoint属性,但只是一个getter而不是setter。 - Dave Hogan
没问题 - 我在这里解释的https://dev59.com/PknSa4cB1Zd3GeqPPZ3P找到了Bind方法。非常感谢你的帮助,Aviad。 - Dave Hogan
如果我想使用的另一个IP不是本地IP怎么办? - gunakkoc
通信通道由两个套接字组成,每个套接字都有一个地址,这个问题涉及到本地端的套接字。如果你想连接到远程某处,你要问的是远程端。为了指定连接的目标,你可以使用“Connect”方法。 - Aviad P.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接