저는 최근 루비 소켓을 배우기 시작했고 주제를 연구하기로 결정했습니다.다른 컴퓨터에서 내 localhost 서버에 연결하는 방법은 무엇입니까?
require 'socket'
server = TCPServer.new 2000 # Server bound to port 2000
loop do
client = server.accept # Wait for a client to connect
client.puts "Hello !"
client.puts "Time is #{Time.now}"
client.close
end
그리고 클라이언트에 대한 예제 코드 :
이 서버의 예제 코드는 다음과 같습니다 는 '소켓'
을 필요로 나는이 원활하게 실행 몇 가지 예제 코드를했다 루비 문서를 건너 왔어요s = TCPSocket.new 'localhost', 2000
while line = s.gets # Read lines from socket
puts line # and print them
end
s.close # close socket when done
이렇게 잘 돌아 갔지만 다른 컴퓨터에서 실행중인 클라이언트를 연결하는 방법은 궁금합니다. 그래서 나는 클라이언트 코드에서 "localhost"를 public IP 주소로 대체하려고 시도했다. 그러나 다른 컴퓨터에서 새로운 클라이언트 코드를 실행하려고 시도했을 때 나는 단지 타임 아웃 오류가 발생했다. 심지어 서버를 실행하는 동일한 컴퓨터에서 새 클라이언트 코드를 실행하려고 시도했지만 여전히 시간 초과 오류가 발생했습니다. 누구나 제대로 작동하도록 어떻게 알 수 있습니까? 도움이 될 것입니다.
임의의 외부 서비스가 제공하는 주소 대신 다른 컴퓨터의 * 내부 * IP 주소를 사용해보십시오. OS에 따라'ipconfig' 또는'ifconfig' 명령을 사용하여 무엇인지 확인하십시오. NAT 나 내부 연결에 외부 IP 주소를 사용할 수없는 곳의 뒤에있을 가능성이 큽니다. –
@ GregHewgill, 고맙습니다. 그러나 "ECONNREFUSED"오류가 발생하기 때문에 서버를 호스팅하는 컴퓨터가 클라이언트를 차단하고있는 것으로 보입니다. – lakam99
그건 올바른 방향으로 나아가는 단계입니다. 이는 서버가 실행되고 있지 않거나 서버의 일부 로컬 방화벽 소프트웨어가 들어오는 연결을 차단하고 있음을 의미합니다. –