2012-03-18 2 views
3

httplistener를 만들었으며 로컬 호스트에서만 접두사로 작동합니다. 원격 서버 ip로 변경하면 오류가 표시됩니다. 내 로컬 IP 모든 아이디어에 "내 공용 IP"를 변경하는 경우원격 IP 인 경우 C# httplistener 오류

using (WebClient wc = new WebClient())  // Make a client request. 
        wc.DownloadString 
         ("http://"my public ip"(on my router):8080/lg.txt"); //port forwarding is set 
       MessageBox.Show("received"); 

그것은 단지 작동합니다

HttpListener listener = new HttpListener(); 
     listener.Prefixes.Add("http://*:8080/"); // I need localhost replaced with remote ip 
     listener.Start(); 
     while (true) 
     { 
      // Wait for a client request: 
      HttpListenerContext context = listener.GetContext(); 

      // Respond to the request: 
      string msg = "You asked for: " + context.Request.RawUrl; 
      context.Response.ContentLength64 = Encoding.UTF8.GetByteCount(msg); 
      context.Response.StatusCode = (int)HttpStatusCode.OK; 

      using (Stream s = context.Response.OutputStream) 
      using (StreamWriter writer = new StreamWriter(s)) 
       writer.Write(msg); 
     } 
     listener.Stop(); 

이 웹 클라이언트는 다음과 같습니다

코드인가?

+2

"원격 서버 IP"- 누구에게 원격입니까? 그것은 서버에 국부적이어야합니다 ... –

+0

@Marc는 내 공공 IP 주소를 의미합니다 – Igor

답변

2

Windows 방화벽이 켜져 있습니까? 사용 중지하고 도움이되는지 확인해보십시오. 로컬 서비스 목록에서 Windows 방화벽 서비스를 실제로 해제해야 할 수 있습니다.

+0

그래, 그게 다야! 프로그래밍 방식으로 방화벽 예외 규칙을 추가하는 방법은 무엇입니까 ??? – Igor

+0

내가 알지 못하는 것은 ... 프로그램이 방화벽 규칙을 추가 할 수 있다면 악의적 인 프로그램이 컴퓨터를 세계에 개방 할 수있는 매우 큰 보안 취약점이라고 생각합니다. – MattW

1

먼저 방화벽을 확인하십시오. 아마도 HttpListener에 의해 사용되는 http.sys가 더 가능성이 높습니다. "netsh"를 통해 계정에 접두사를 사용할 수있게해야합니다. 높은 관리자 계정으로 간단히 실행하여이를 확인할 수 있습니다. 작동하는 경우 http.sys 사용 권한 문제 일 수 있습니다.

+1

방화벽입니다. – Igor

관련 문제