2012-04-17 3 views
4

그것은 내가 곱슬 곱슬에 여전히 입력 뭔가를 할 수있는 것,이 시점에서이 경우루비에서 TCP 서버가 http 요청으로부터 데이터를 수신하는 방법은 무엇입니까?

curl -v localhost:1234 

* Trying 127.0.0.1... connected 
* Connected to localhost (127.0.0.1) port 1234 (#0) 
> GET/HTTP/1.1 
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5 
> Host: localhost:1234 
> Accept: */* 
> 
data from server side 

에 컬을

server = TCPServer.open 1234 

socket = server.accept 

socket.puts 'data from server side' 

하여 클라이언트에 서버 응답을 전송하고 클라이언트 측에서하기 편리합니다 그래서 가정 TCP 연결은 내가 현재 TCPSocket의 instan에 컬 클라이언트에서이 메시지를받을 수있는 방법, 입력 그 이후

data from the curl client 

, 양방향 응?

나는

socket.read 

을 시도했지만 그 다음, 사용자에게 인사말을 읽어 사용자의 입력을 기다리는 것 같은

답변

4

뭔가를 작동하지 않습니다. 이 예제는 단순히 서버 측에서 입력을 다시 에코합니다.

server = TCPServer.open(8000) 
socket = server.accept 
socket.puts 'Hello!' # Prints Hello! to the client 
while line = socket.gets 
    puts line # Prints whatever the client enters on the server's output 
end 
+0

GET/HTTP/1.1 사용자 에이전트 : 컬/7.21.4 (보편적-사과 darwin11.0) libcurl에/7.21.4 OpenSSL을/0.9.8r ZLIB/1.2.5 호스트 : 로컬 호스트 : 1234 수락 : */* – mko

+0

위의 결과는 클라이언트 입력 메시지가 없습니다. – mko

+0

'telnet localhost 8000'을 사용하고있었습니다. 'curl '이 양방향 통신을 지원하는지 확신 할 수 없습니다 (예, 쉘에 뭔가를 입력 할 수있는 것처럼 보이지만 서버에 전송되지 않습니다). –