最近在使用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
分享到:
相关推荐
Ruby-Dalli是专门为Ruby编程语言设计的一个高性能的memcached客户端库。memcached是一种分布式内存对象缓存系统,常用于减轻数据库的负载,提高Web应用的响应速度。Dalli这个名字是"Damn Lighweight All-In-One ...
src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...
通过`web-socket-ruby-master.zip`这个压缩包,我们可以预见到其中可能包含的示例代码,可能是关于如何使用Ruby实现WebSocket客户端和服务端的实例。这些代码可能会演示如何处理WebSocket事件(如打开、关闭、消息...
ruby安装包-rubyinstaller-devkit-3.0.2-1-x64安装文件 Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、...
em-http-request, 异步HTTP客户端( EventMachine + ruby ) EM-HTTP-Request 异步( EventMachine ) HTTP客户端,支持:异步 HTTP API用于单&并行请求执行保持活动状态和HTTP管道支持自动跟随 3xx 重定向最大深度自动 ...
它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本自动化、服务器管理等领域。RubyInstaller是Windows平台上安装Ruby的一种便捷方式,而DevKit则是用于编译和链接C扩展的工具集。 标题中的...
Ruby是一种动态、面向对象的编程语言,而Selenium WebDriver是一个开源的自动化测试框架,支持多种浏览器和编程语言,其中包括Ruby。在这个“ruby+selenium-webdriver测试--第一个例子源代码”中,我们将探讨如何...
ruby-oci8-2.1.5-x86-mingw32.gem,ruby连接oracle数据库gem包
在本压缩包“ruby-1.9.1-p0-i386-mswin32.rar”中,包含的是针对i386架构的Windows 32位系统的Ruby安装程序。这个版本(p0)意味着它是1.9.1主版本下的一个特定补丁级别,通常包括了一些错误修复和优化。 Ruby的...
总结,ruby-debug-ide是Ruby开发者的得力助手,它使得在IDE中进行调试变得简单易用。正确理解和熟练运用这个工具,能够显著提高开发效率,减少错误,从而提升整体项目质量。无论是初学者还是经验丰富的开发者,都...
ruby 元编程 中文 《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开...
Ruby-Redic是一款轻量级的Redis客户端库,专为Ruby编程语言设计,方便开发者与Redis内存数据存储系统进行高效交互。Redic以其简洁、高效和易于使用的特性,深受Ruby社区的喜爱。在本文中,我们将深入探讨Redic的各个...
Ruby的Socket编程模型支持开发者通过Thread类创建新的线程来处理新的客户端连接,而主线程则继续等待新的连接请求,这样就实现了一个多客户端并发服务。 总体来说,Ruby中的Socket编程是一个强大且易用的工具,可以...
"ruby-1.9.1-p0-i386-mswin32.zip" 是一个针对Windows操作系统编译的Ruby编程环境的压缩包,发布于2009年6月20日,当时是Ruby 1.9.1版本的最新版。 Ruby 1.9.1是一个重要的版本更新,引入了许多改进和新特性,包括...
ruby安装包-rubyinstaller-devkit-3.0.2-1-x64安装包 Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本...
开源地址 ...使用的开源库 Volley:完成网络通信 Gson: 完成json的解析 Android-PullToRefresh : 下拉刷新和到底部自动加载,以后可能换成SwipeRefreshLayout butterknife: view注入框架,简化开发,减少代码。...
总的来说,这个Ruby脚本提供了一个独特的视角来看待Ruby在网络安全领域的应用,同时也提醒我们,任何编程语言都可能被用于各种目的,无论是常规的还是非常规的。在实际使用时,务必注意合法性和道德问题,避免侵犯...
标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...
《Ruby面向对象设计实践》是一本关于如何在Ruby语言中实现面向对象编程(Object-Oriented Programming, OOP)的经典著作。该书首次出版于2013年,作者是Sandi Metz,一位著名的软件工程师和培训师,在软件开发领域...
Ruby-Savon是Ruby编程语言中的一个强大的SOAP(Simple Object Access Protocol)客户端库,它使得在Ruby中与SOAP服务交互变得简单而高效。SOAP是一种基于XML的协议,用于在不同系统之间交换结构化和类型化的数据,常...