2012-04-17 84 views
4

這是很方便的通過如何TCPServer從Ruby中的http請求接收數據?

server = TCPServer.open 1234 

socket = server.accept 

socket.puts 'data from server side' 

在這一點上服務器響應發送到客戶端和客戶端,捲曲在這種情況下

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 

,似乎我能在捲曲還是輸入的東西,因此我假定TCP連接是雙向的,我輸入

data from the curl client 

之後,如何可以接收來自客戶端的捲曲此消息在當前的TCPSocket instan CE?

我已經試過

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 2012-04-17 16:20:31

+0

以上是我得到的輸出,沒有客戶端輸入消息 – mko 2012-04-17 16:21:04

+0

我正在使用'telnet localhost 8000'。我不確定'curl'是否支持雙向通信(是的,shell看起來像你可以鍵入內容,但並沒有發送到服務器,據我所知)。 – 2012-04-17 17:58:53

相關問題