最近在使用ruby编写飞信客户端时,遇到TCPSocket的阻塞问题,socket总是直接挂死或者超时失败。经过一番探索,下面的方法颇有奇效,终于可以成功发短信啦:
require "socket"
class SIPC
def initialize(sipc_addr)
puts sipc_addr #uri = "221.176.31.33:8080"
uri = sipc_addr.split(":")
@socket = TCPSocket.new(uri[0], uri[1].to_i)
end
# send SIP-C request
def request(sip_request)
puts sip_request
@socket.write_nonblock(sip_request)
#@socket.write(sip_request) also works
#select,read_nonblock and rescue is the key
IO.select [@socket]
res = ""
begin
while chunk = @socket.read_nonblock(4096)
res = res + chunk
end
rescue
end
puts res
return res
end
end
分享到:
相关推荐
Dalli - 高性能Ruby memcached客户端
em-http-request, 异步HTTP客户端( EventMachine + ruby ) EM-HTTP-Request 异步( EventMachine ) HTTP客户端,支持:异步 HTTP API用于单&并行请求执行保持活动状态和HTTP管道支持自动跟随 3xx 重定向最大深度自动 ...
博客“ruby+selenium-webdriver测试--第一个例子源代码”
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
ruby-1.8.7-p358-doc-chm.7z 3.65 MB 1,399 Other Other ruby-1.8.7-p358-i386-mingw32.7z 5.12 MB 1,503 i386 Other rubyinstaller-1.8.7-p358.exe 11.69 MB 13,534 i386 .exe (Windows executable)
ruby-debug-base19-0.11.26.gem
Redic - 轻量级Redis客户端
ruby-oci8-2.1.5-x86-mingw32.gem,ruby连接oracle数据库gem包
博客“ruby+selenium-webdriver测试--多个测试用例”源代码
Ruby 面向对象设计实践--2013年
ruby 元编程 中文 《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开...
ruby-1.9.2-preview1-x64-mswin64_80
0积分下载,不允许系统调分-20211115 ruby官方安装包
开源地址 ...使用的开源库 Volley:完成网络通信 Gson: 完成json的解析 Android-PullToRefresh : 下拉刷新和到底部自动加载,以后可能换成SwipeRefreshLayout butterknife: view注入框架,简化开发,减少代码。...
ruby-1.8.7-p174-i386-mswin32
Ruby编程,Ruby编程,Ruby编程,Ruby编程,Ruby编程,
博客“ruby+selenium-webdriver测试-测试用例源代码”
ruby-debug-ide19-0.4.12.gem
Legato - Google Analytics Reporting API的Ruby客户端
ice最简单实现 ruby调用ice接口 - Ruby - language - ITeye论坛