socket = TCPSocket.new(ip,port) socket.send(construct_msg,0) #(发送注册侦听器消息)
问题是:现在成功的注册了侦听器后,一直监听链路上是否有返回的消息,并打印出该返回消息,这个如何实现了,各位大牛
ans = socket.read puts ans
#1 楼 @so_zengtao
socket.read 是个 block 的操作,如果 server 没有返回 eof,客户端不会打印出任何东西。
socket.read
所以应该使用 partial read 来替代 read。
require 'socket' # step1 create socket = Socket.new(:INET, :STREAM) # step2 bind(skip) # step3 connect remote_addr = Socket.pack_sockaddr_in(80, 'google.com') socket.connect(remote_addr) while data = socket.readpartial(one_hundred_kb) do puts data end # step4 close socket.close
http://stackoverflow.com/questions/8649860/ruby-tcpsocket-http-request
[book] Working with TCP Sockets
大便时遇到这个问题,顺便回一下。
#2 楼 @xiaoronglv 多谢指出
@xiaoronglv @so_zengtao 哇塞,谢谢 2 位大牛
@haoshanshan 之前社区里有帖子讨论过 socket,有例子