2009-12-14 70 views
31

Làm cách nào để xác định địa chỉ IP từ xa của ổ cắm được kết nối?Lấy địa chỉ IP của đầu cuối socket từ xa

Tôi có một đối tượng RemoteEndPoint mà tôi có thể truy cập và cũng như thành viên AddressFamily của nó.

Làm cách nào để sử dụng chúng để tìm địa chỉ IP?

Cảm ơn!

Hiện nay cố gắng

IPAddress.Parse(testSocket.Address.Address.ToString()).ToString(); 

và nhận 1.0.0.127 thay vì 127.0.0.1 cho điểm cuối localhost. Điều này có bình thường không?

Trả lời

56

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.remoteendpoint.aspx

Sau đó bạn có thể gọi IPEndPoint .. ::. Phương pháp Địa chỉ để lấy IPAddress từ xa, và IPEndPoint .. ::. Phương pháp Cảng để lấy số cổng từ xa.

Thêm từ liên kết (cố định lên rất nhiều heh):

Socket s; 

IPEndPoint remoteIpEndPoint = s.RemoteEndPoint as IPEndPoint; 
IPEndPoint localIpEndPoint = s.LocalEndPoint as IPEndPoint; 

if (remoteIpEndPoint != null) 
{ 
    // Using the RemoteEndPoint property. 
    Console.WriteLine("I am connected to " + remoteIpEndPoint.Address + "on port number " + remoteIpEndPoint.Port); 
} 

if (localIpEndPoint != null) 
{ 
    // Using the LocalEndPoint property. 
    Console.WriteLine("My local IpAddress is :" + localIpEndPoint.Address + "I am connected on port number " + localIpEndPoint.Port); 
} 
5

RemoteEndPoint là một tài sản, kiểu của nó là System.Net.EndPoint mà kế thừa từ System.Net.IPEndPoint.

Nếu bạn xem IPEndPoint members, bạn sẽ thấy rằng có thuộc tính Address.

+1

Tất cả những gì tôi thấy có sẵn cho các thành viên của RemoteEndPoint là AddressFamily. Làm cách nào để tôi có quyền truy cập vào Địa chỉ? – bobber205

+1

((System.Net.IPEndPoint) socket.RemoteEndPoint) .Thêm –

+0

Cảm ơn bạn! :) Tôi đang cố gắng chuỗi từ xaIP = IPAddress.Parse (testSocket.Address.Address.ToString()) .ToString(); và nhận được "1.0.0.127" thay vì "127.0.0.1" cho các kết nối máy chủ cục bộ. Điều này có bình thường không? – bobber205

2
string ip = ((IPEndPoint)(testsocket.RemoteEndPoint)).Address.ToString(); 
0

Tôi đã tạo mã này bằng VB.NET nhưng bạn có thể dịch. Vâng giả vờ bạn có biến Khách hàng như một TcpClient

Dim ClientRemoteIP As String = Client.Client.RemoteEndPoint.ToString.Remove(Client.Client.RemoteEndPoint.ToString.IndexOf(":")) 

Hy vọng nó sẽ giúp! Chúc mừng.

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