2011-01-11 4 views
2

TCPServer.new (port)는 로컬 호스트 또는 원격 시스템의 요청을 처리 할 수있는 서버를 만듭니다.Ruby의 GServer는 로컬 호스트에서만 작업하려고합니다

그러나 Ghost.new (port)는 localhost의 요청 만 서비스 할 수있는 서버를 만듭니다.

GServer의 소스를 보면 TCPServer.new (@ host, @ port)를 호출합니다. @host의 기본값은 DEFAULT_HOST이며 127.0.0.1입니다.

TCPServer.new의 소스는 말한다 :

# TCPServer.new([hostname,] port) => tcpserver 
# Creates a new server socket bound to _port_. 
# If _hostname_ is given, the socket is bound to it. 

내가 GServer를 사용하지만, 특정 호스트 이름에 바인딩 할 싶습니다. 그런 일이 가능한가? 웹상의 모든 예는 localhost만을 사용합니다.

호스트가 GServer에 지정되어 있지 않으면 GServer가 TCPServer에 호스트를 지정하지 않아야합니다.

+0

이 질문에 감사드립니다. 같은 문제가 발생했습니다. DEFAULT_HOST를 0.0.0.0으로 재정의하는 방법이 있습니까 (즉, GServer를 호출하는 코드를 변경하지 않고 전면적으로 변경하십시오). – jimbojw

답변

3

호스트 이름으로 0.0.0.0을 사용하면 모든 인터페이스에 바인딩 할 수 있습니다.

+0

감사합니다! 나는 이것이 어디에서나 문서화 된 것을 보지 못했습니다. – Fantius

+1

다행이었습니다. 그것은 설명서에 없을 수도 있지만 0.0.0.0에 대한 바인딩이이를 수행하는 일반적인 방법입니다 (netstat 또는 이와 유사한 도구를 사용하여 컴퓨터에서 수신하는 서비스를 보면 대부분의 서비스가 바인딩되는 방식이기도합니다). – cam