2010-01-06 35 views
6

Tôi đã một máy chủ với một số địa chỉ IP được gán cho adapter mạng.Xác định địa chỉ IP đi để sử dụng với TCPClient/Socket trong C#

Trên máy chủ đó là một ứng dụng client để kết nối với một ứng dụng máy chủ thông qua TCPClient. Đối với tất cả các liên lạc gửi đi, địa chỉ IP mặc định của máy chủ của tôi đang được sử dụng, tuy nhiên đối với ứng dụng này, tôi muốn giao tiếp gửi đi được gửi đi trên một địa chỉ IP cục bộ khác.

Có thể khi giao tiếp ra để xác định một IP được gán địa phương?

Tôi đang cố gắng để làm cho các ứng dụng máy chủ từ xa nghĩ đó là từ IP khác vì vậy nó sẽ đi qua tường lửa vv ....

Cảm ơn trước

Trả lời

12

Bạn có thể sử dụng các nhà xây dựng của TcpClient chấp nhận một địa chỉ endpoint cục bộ:

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

Ví dụ:

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

Tham chiếu: TcpClient Constructor (IPEndPoint)

+0

Cảm ơn vì điều đó, tôi giả định sai rằng hàm tạo là điểm cuối cho máy chủ từ xa. Ra quan tâm là có một điều tương tự cho lớp System.Net.Sockets.Socket? Nó có một LocalEndPoint bất động sản nhưng nó chỉ là một getter và không phải là một setter. – DaveHogan

+0

OK - Tôi đã tìm thấy phương pháp Bind như được giải thích tại đây: http://stackoverflow.com/questions/1508804/setting-a-sockets-local-endpoint Rất cám ơn sự giúp đỡ của bạn Aviad – DaveHogan

+0

Điều gì sẽ xảy ra nếu IP khác Tôi muốn sử dụng không phải là một địa phương IP? – theGD

Các vấn đề liên quan