2014-03-28 2 views
0

사실 저는 Ruby 프로그래밍에 초보자이며 Ruby의 동작을 이해하는 데 몇 가지 문제가 있습니다. 보시다시피이 몇 가지 정보를 입력을 기다리는 간단한 소켓 서버입니다,소켓으로 작업하는 동안 Ruby 스크립트의 비정상적인 동작

require 'socket' 

server = TCPServer.new 2000 
loop do 
    Thread.start(server.accept) do |client| 

    puts 'Client connected: ' + client.gets 

    line = "-1" 

    while (line != "/close ") 
     line = client.gets(); 
     puts line 
    end 

    puts 'client closed' 
    client.close 
    end 
end 

: 여기

는 코드입니다. "/ close"를 얻으면 while 루프를 종료하지만 결코 puts 'client closed'client.close으로 이동하지 않는 것이 문제입니다. 왜 그런가, 또는 내가 뭘 잘못하고 있니?

답변

1

puts line에서 으로 변경하면 문제가있는 것으로 생각됩니다.


찾았나요? gets은 줄 단위로 읽습니다. 줄 끝 부분은 \n이므로 줄을 가져 오면 "/close "과 같지 않습니다. 예를 들어 line.strip을 사용하도록 비교를 변경하면됩니다.

+0

'line.strip'과''/ close "'에서 모두 제거한 후 매우 고맙습니다. –

관련 문제