2013-06-18 5 views
1

나는 운동을 위해 매우 간단한 자바 http 서버를 썼다. 나는 컬을 테스트하고 모든 것이 잘 작동하는 것 같다하지만 브라우저브라우저를 통해 localhost의 http 서버에 연결할 수없는 이유는 무엇입니까?

http://localhost:6666/ 

에서 요청을 보내려고 할 때 서버가 응답하지 않습니다. 나는 심지어 서버 소켓이 브라우저를 통해 서버에 충돌하려고 시도하지 않는 연결을 받아들이는 지점에 System.out.println()을 표시한다. 이걸 도와주세요. 감사합니다 :)

편집 : 코드의 부 :

요청이 여러 요청
+0

아마도 코드를 게시해야 할 것입니다. 그 외 브라우저 프록시 설정 일 수도 있습니다. – austin

+0

차이점은 있지만 127.0.0.1 : 6666을 사용해 보았습니까? – Supericy

+0

시도한 127.0.0.1:6666 효과 없음 – user1990198

답변

1

을 처리하기 위해 스레드를 확장하는 클래스입니다
public class Server { 

    private ServerSocket serverSocket; 
    private Socket socket; 
    public Server() { 
     try { 
      serverSocket = new ServerSocket(6666); 
      while (true) { 
       socket = serverSocket.accept(); 
       System.out.println("Whoop! Connection!"); 
       Request request = new Request(socket); 
       request.run(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
      } 
    } 
} 

(난 당신이 정확하게 사용하고 있으리라 믿고있어 브라우저에서 동일한 URL을 사용하고 curl ...

브라우저가 서비스와 다른 호스트에서 실행되는 경우 그 이유는 localhost IP 주소 (예 : 127.0.0.1)는 보낸 호스트 이외의 다른 호스트로 라우팅되지 않습니다. 즉, "로컬"이 의미하는 것입니다 ... 간단히 말해서, 이는 정상적인 동작입니다. (아마도 다른 호스트에서 curl과 브라우저를 실행하고 있습니다.)

브라우저가 서비스와 동일한 호스트에서 실행중인 경우이 동작은 다소 수수께끼입니다. 그러나 몇 가지 가능한 설명이 있습니다

  • 당신은 당신의 브라우저에서 이상한 네트워크 프록시 설정이있을 수 있습니다. 예를 들어 다른 컴퓨터의 HTTP 프록시에 모든 HTTP 요청 (127.0.0.1 포함)을 보내도록 브라우저를 구성한 경우 프록시가 실제 컴퓨터로 요청을 릴레이하면 잘못된 위치로 이동합니다.

  • localhost 도메인 이름이 이상한 IP 주소에 바인딩 될 수 있습니다. 예 : 127.x.x.x IP 주소 이외의 값입니다. (이상한 일이지만 잘못된 길을가는 사람들이 있다고 들었습니다.)

  • 127.0.0.1 IP 주소가 루프백 네트워크 어댑터와 다른 것일 수 있습니다. (기술적으로 가능할 지 모르겠다 ...)

  • iptables를 사용하여 가상 네트워크에서 라우팅을 구현하는 경우 127.0.0.1 패킷을 잘못된 위치로 보낼 수 있습니다. (기술적으로 가능할 지 모르겠다.)

첫 번째 글 머리 기호는 나에게 가장 많이 들릴 것 같다.

관련 문제