2010-07-15 93 views
10

Tôi đã quản lý để kết nối IP khách hàng được kết nối với mã bên dưới nhưng dường như không nhận được tên máy chủ.Nhận tên máy chủ từ địa chỉ IP

Globals.connectedIPAddress = "" + IPAddress.Parse(((
    IPEndPoint)_client.Client.RemoteEndPoint).Address.ToString()); 
+4

Chỉ cần tò mò: Liệu ToString-Phân tích-ToString của bạn lộn xộn có mục đích nào? – dtb

+0

Chồi mới. Nếu có một cách sạch hơn thì tôi muốn biết xin vui lòng. – arbme

Trả lời

14

Vâng, không phải mọi địa chỉ IP đều có một tên. Tuy nhiên, với số IPAddress bạn có thể sử dụng Dns.GetHostEntry để thử để giải quyết. Cũng lưu ý rằng nếu nó là một bộ định tuyến NAT, bạn sẽ nhận được địa chỉ IP của router chứ không phải là máy thực tế của chúng.

Và chỉ để giải quyết các điểm trong các ý kiến, tôi đồng ý rằng không có điểm trong ToString/Parse/ToString:

IPAddress address = ((IPEndPoint)_client.Client.RemoteEndPoint).Address; 
Globals.connectedIPAddress = address.ToString(); 
+0

@ nếu đó là bộ định tuyến NAT, bạn sẽ nhận được địa chỉ IP của bộ định tuyến thay vì máy thực tế của chúng. - Có thể lấy tên máy thực (tên miền) không? –

+0

@VijayBalkawade: Tôi hy vọng không, cá nhân ... –

+0

@JonSkeet là không có cách nào tốt hơn này (2,5 năm sau)? Trên mạng của tôi phương pháp này ném một ngoại lệ Mỗi lần. –

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