2014-10-15 3 views
0

나는 "The Well Grounded Rubyist"의이 특정 코드 예제를 통해 TCPServer와 스레드에 대해 설명하려고합니다. 코드는 다음과 같습니다.내 Macbook에 어떤 포트가 있는지 어떻게 알 수 있습니까?

require 'socket' 
server = TCPServer.new(3939) 
connect = server.accept 
connect.puts "Hi. Here's the date." 
connect.puts 'date' 
connect.close 
server.close 

내 MacBook에 어떤 포트가 있는지 어떻게 알 수 있습니까? 이 문서의 예제에서는 2000입니다. 그러나이 두 숫자를 모두 시도해도 코드가 실행되지 않고 계속 무기한 정지됩니다.

이 번호가 확인 된 포트인지 어떻게 확인할 수 있습니까? 포트 번호로 텔넷을 시도했는데 연결이 매번 거부됩니다.

+1

연결을 기다리고있는 이유는이 연결이 끊어지는 이유입니다. MAC 주소는 3939입니다. – BroiSatse

+1

Wikpedia의 "[TCP 및 UDP 포트 번호 목록] (http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers)"을 읽는 것이 좋습니다. –

답변

0

server.accepts 클라이언트가 서버에 연결될 때까지 대기합니다. 그런 일이 일어나지 않는다면, 그것은 단지 계속 기다리고 있습니다. 코드를 실행 한 다음 터미널을 열고 다음을 입력하십시오.

require 'socket' 

s = TCPSocket.new 'localhost', 3939 

이 시점에서 서버와 연결할 TCPSocket을 생성합니다. 이렇게하면 나머지 코드가 실행됩니다. 소켓으로 확인할 수 있습니다 :

while line = s.gets # Read lines from socket 
    puts line   # and print them 
end 
+0

빠른 답장 BroiSatse 주셔서 감사합니다. 이것은 트릭을했다. 마지막으로, TCP.new 생성자에 숫자를 삽입 할 수 있습니까? –

+0

1024 이하의 포트는 보통 html 용으로 예약되어 있고, https에는 443 개, ssh 용으로는 22 개와 같이 일부 서비스 용으로 예약되어 있습니다. 실제로 네트워크 포트는 숫자 (16 비트 숫자) 일 뿐이고 컴퓨터 포트와는 다른 하드웨어는 뒤에 있지 않습니다. – BroiSatse

관련 문제