2012-03-29 4 views
-2

받기 :나는 다음과 같은 것을 쓴 컴퓨터 이름을 얻으려면 컴퓨터 이름

Dim client As System.Net.IPHostEntry 
client = System.Net.Dns.GetHostByAddress(Request.ServerVariables.Item("REMOTE_HOST")) 
label1.text=client.hostname 

이 코드는 서버 시스템에 있지만 작동하지 않는 클라이언트 시스템에서 작동합니다.

컴퓨터 이름을 찾는 다른 방법이 있습니까?

+0

어떤 오류가 발생합니까? 'Request.ServerVariables.Item ("REMOTE_HOST")는 무엇을 반환합니까? – jgauffin

답변

2

당신은 예를 들어, 클라이언트의 요청을 볼 필요가 : 당신의 클라이언트의 DNS를 받고에서 최고의 시도 인 것처럼

label1.Text = HttpContext.Current.Request.UserHostName; 

보다 약 HttpRequest.UserHostName Property

+0

이 코드를 사용하면 컴퓨터의 IP 주소를 볼 수 있지만 컴퓨터 이름이 필요합니다. – Abhishek

+0

그래서 DNS 조회를합니까? 귀하의 질문과 같은 교장. – Lloyd

+0

DNS 조회를 수행하는 방법은 무엇입니까? – Abhishek

0

코드 아래 참조 컴퓨터 이름 :

Dim host As IPHostEntry 
'Get the server variable value 
host = Dns.GetHostEntry(HttpContext.Current.Request.ServerVariables.Item("REMOTE_HOST")) 

"REMOTE_HOST"서버 변수를 사용하여 수행하는 작업은 다음과 같습니다. 스케이팅은 호스트 이름 을 요청하면이됩니다. 마지막 부분을 다시 읽으면 왜 항상 적절한 결과를 얻지 못하는지에 대한 답을 제공합니다.

은 당신이 그것의 앞에 앉아로드 밸런서가있는 webfarm에 귀하의 웹 사이트가있는 경우, 당신은 아닌 요청을하는 원래 클라이언트의 부하 분산의 값을 얻을 것이다. "REMOTE_HOST"에는 마지막 호스트 요청을 나타내는 세부 정보가 있어야합니다. 이것이 그 서버 변수를 사용하는 것이 신뢰할 수없는 이유입니다.

또한 보안상의 위험이 있으므로 JavaScript는이 정보를 가져올 수 없으므로이 옵션도 사용할 수 없습니다. 정보를 얻기 위해 순전히 오래된 학교 일괄 처리 방법은 ActiveX 컨트롤을 사용하는 것이었지만 이는 실행 가능한 옵션도 아닙니다. 요점은 도메인에 있고 IP로 역방향 조회를 수행 할 수 없다면 원래 클라이언트의 시스템 이름을 100 % 얻는 일관되고 안정적인 방법이 없을 것입니다.

관련 문제