2012-04-17 51 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

相关问题