2010-06-28 3 views
1

소켓을 사용하여 2 대의 컴퓨터 사이에 연결을 만들고 싶습니다. 이러한 목적 중 하나는 서버이며, 이것은 내가 쓰기했습니다 코드입니다 :루비의 TCPServer 소켓

sock= TCPServer.open('localhost', 6666) 
sock.accept 

클라이언트가 연결을 시도 :

client = TCPSocket.open(ip_server, 6666) 

하지만 작동하지 않습니다. 서버가 네트워크 포트를 열지 않고 서버의 포트를 검색하고 로컬 모드에서만 작동합니다.

사전

에 삼익 THK 어떤 제안,

답변

0

예, 그리고 무사 그래서, 당신은 'localhost'의 인터페이스에 서버 포트를 결합해야한다고 말했다 이것은 어떤에 127.0.0.1하고 루프백 인터페이스에 결합되며 때문이 현실 세계에 연결하는 실제 인터페이스.

당신은

는 로컬 호스트 느릅 나무에서 수신 대기 때문에이 "로컬 모드"에서 작동
sock = TCPServer.new(6666) 
sock.accept 
0

는 서버에서 실행되는 컴퓨터의 루프백 주소입니다 시도해야합니다. 서버의 IP 주소는 컴퓨터를 해결해야한다 로컬 네트워크 (192.168.xx와 같은 것)에 있습니다.

3

이 코드를 성공적으로 사용했습니다. 서버 측 : 최근 내가 처리 만든 'EventMachine' 보석을 사용하기 시작했습니다

serverSocket = TCPServer.new("", port) 
serverSocket.accept 

및 클라이언트는

t = TCPSocket.new(server_ip, port.to_i) 

그러나, 쉽게 소켓 10 배

1

그것은 이미 말했다되어 년대 서비스가 루프백 "localhost"를 사용하여 "로컬 모드"에서 실행 중입니다.

sock= TCPServer.open('localhost', 6666) 
sock.accept 

는 기본 파일 설명자를위한 편리한 인터페이스입니다. 솔직히 소켓 프로그래밍을 너무 쉽게 만듭니다.

'localhost'는 루프백으로 127.0.0.1입니다.

sock= TCPServer.open('127.0.0.1', 6666) 
sock.accept 

서버를 가정, 로컬 네트워크의 네트워크 연결을 사용할 경우는 192.168.0.1의 할당 된 IP가있다, 당신이 듣고 로컬 IP 주소를 할당 할 수 있습니다 : 따라서, 귀하의 문에 해당

열린 포트에 대한
sock= TCPServer.open('192.168.0.1', 6666) 
sock.accept 

, 모든 생각할 개방, 사용 :

sock= TCPServer.open(6666) 
sock.accept 

모든 파일이라는 것을 기억 - 당신이 읽고 만들고있어 연결 두 개 (또는 그 이상)의 위치에서 동일한 파일 또는 일련의 파일에 쓰기. 이러한 파일에 액세스 할 수있는 사용자와 범위를 제어하는 ​​것이 중요합니다.