2010-01-06 8 views
6

J'ai un serveur avec plusieurs adresses IP affectées à la carte réseau.Spécifiez l'adresse IP sortante à utiliser avec TCPClient/Socket in C#

Sur ce serveur est une application cliente pour se connecter à une autre application serveur via TCPClient. Pour toutes les communications sortantes, l'adresse IP par défaut de mon serveur est utilisée, mais pour cette application, j'aimerais que la communication sortante soit envoyée sur une autre adresse IP locale.

Est-il possible lors de la communication de spécifier une autre adresse IP attribuée localement?

Je suis en train de faire l'application serveur distant pense qu'il est d'une autre IP il passera par les pare-feu etc ....

Merci à l'avance

Répondre

12

Vous pouvez utiliser le constructeur de TcpClient qui accepte une adresse de point de terminaison locale:

TcpClient c=new TcpClient(new System.Net.IPEndPoint(...)); 

Par exemple:

TcpClient c=new TcpClient(new IPEndPoint(IPAddress.Parse("192.168.1.1"), 0); 

Référence: TcpClient Constructor (IPEndPoint)

+0

Merci pour cela, j'ai supposé à tort que le constructeur était le point de terminaison pour l'hôte distant. Dans l'intérêt de la classe System.Net.Sockets.Socket, y a-t-il une chose similaire? Il a une propriété LocalEndPoint mais c'est seulement un getter et non un setter. – DaveHogan

+0

C'est OK - J'ai trouvé la méthode Bind comme expliqué ici: http://stackoverflow.com/questions/1508804/setting-a-sockets-local-endpoint Merci beaucoup pour votre aide Aviad – DaveHogan

+0

Et si l'autre IP que Je veux utiliser n'est pas une adresse IP locale? – theGD