鹤惊昆仑 发表于 2013-2-5 02:32:28

ruby非阻塞式socket编程--写飞信客户端的经验总结

最近在使用ruby编写飞信客户端时,遇到TCPSocket的阻塞问题,socket总是直接挂死或者超时失败。经过一番探索,下面的方法颇有奇效,终于可以成功发短信啦:
require "socket"class SIPCdef initialize(sipc_addr)puts sipc_addr #uri = "221.176.31.33:8080"uri = sipc_addr.split(":")@socket = TCPSocket.new(uri, uri.to_i)end# send SIP-C requestdef request(sip_request)puts sip_request@socket.write_nonblock(sip_request)#@socket.write(sip_request) also works#select,read_nonblock and rescue is the keyIO.select [@socket]res = ""beginwhile chunk = @socket.read_nonblock(4096)res = res + chunkendrescueendputs res return res endend
页: [1]
查看完整版本: ruby非阻塞式socket编程--写飞信客户端的经验总结