`
鹤惊昆仑
  • 浏览: 229010 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • ruby
阅读更多
最近在使用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

3
0
分享到:
评论

相关推荐

    Ruby-Dalli高性能Rubymemcached客户端

    Ruby-Dalli是专门为Ruby编程语言设计的一个高性能的memcached客户端库。memcached是一种分布式内存对象缓存系统,常用于减轻数据库的负载,提高Web应用的响应速度。Dalli这个名字是"Damn Lighweight All-In-One ...

    src-oepkgs/ruby-ruby2ruby

    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 socket_websock

    通过`web-socket-ruby-master.zip`这个压缩包,我们可以预见到其中可能包含的示例代码,可能是关于如何使用Ruby实现WebSocket客户端和服务端的实例。这些代码可能会演示如何处理WebSocket事件(如打开、关闭、消息...

    ruby安装包-rubyinstaller-devkit-3.0.2-1-x64安装文件

    ruby安装包-rubyinstaller-devkit-3.0.2-1-x64安装文件 Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、...

    em-http-request, 异步HTTP客户端( EventMachine + ruby ).zip

    em-http-request, 异步HTTP客户端( EventMachine + ruby ) EM-HTTP-Request 异步( EventMachine ) HTTP客户端,支持:异步 HTTP API用于单&并行请求执行保持活动状态和HTTP管道支持自动跟随 3xx 重定向最大深度自动 ...

    ruby安装包-rubyinstaller-devkit-3.0.2-1-x64.zip

    它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本自动化、服务器管理等领域。RubyInstaller是Windows平台上安装Ruby的一种便捷方式,而DevKit则是用于编译和链接C扩展的工具集。 标题中的...

    ruby+selenium-webdriver测试--第一个例子源代码

    Ruby是一种动态、面向对象的编程语言,而Selenium WebDriver是一个开源的自动化测试框架,支持多种浏览器和编程语言,其中包括Ruby。在这个“ruby+selenium-webdriver测试--第一个例子源代码”中,我们将探讨如何...

    ruby-oci8-2.1.5-x86-mingw32.gem

    ruby-oci8-2.1.5-x86-mingw32.gem,ruby连接oracle数据库gem包

    ruby-1.9.1-p0-i386-mswin32.rar

    在本压缩包“ruby-1.9.1-p0-i386-mswin32.rar”中,包含的是针对i386架构的Windows 32位系统的Ruby安装程序。这个版本(p0)意味着它是1.9.1主版本下的一个特定补丁级别,通常包括了一些错误修复和优化。 Ruby的...

    ruby-debug-ide

    总结,ruby-debug-ide是Ruby开发者的得力助手,它使得在IDE中进行调试变得简单易用。正确理解和熟练运用这个工具,能够显著提高开发效率,减少错误,从而提升整体项目质量。无论是初学者还是经验丰富的开发者,都...

    Ruby元编程-中文

    ruby 元编程 中文 《Ruby元编程》以案例形式循序渐进地介绍Ruby特有的实用编程技巧。通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开...

    Ruby-Redic轻量级Redis客户端

    Ruby-Redic是一款轻量级的Redis客户端库,专为Ruby编程语言设计,方便开发者与Redis内存数据存储系统进行高效交互。Redic以其简洁、高效和易于使用的特性,深受Ruby社区的喜爱。在本文中,我们将深入探讨Redic的各个...

    简单的Ruby中的Socket编程教程

    Ruby的Socket编程模型支持开发者通过Thread类创建新的线程来处理新的客户端连接,而主线程则继续等待新的连接请求,这样就实现了一个多客户端并发服务。 总体来说,Ruby中的Socket编程是一个强大且易用的工具,可以...

    ruby-1.9.1-p0-i386-mswin32.zip

    "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安装包-rubyinstaller-devkit-3.0.2-1-x64安装包 Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本...

    Android代码-rubychina的安卓客户端

    开源地址 ...使用的开源库 Volley:完成网络通信 Gson: 完成json的解析 Android-PullToRefresh : 下拉刷新和到底部自动加载,以后可能换成SwipeRefreshLayout butterknife: view注入框架,简化开发,减少代码。...

    Ruby-可以持续阻塞所有WiFi客户端和范围内的接入点的Ruby脚本

    总的来说,这个Ruby脚本提供了一个独特的视角来看待Ruby在网络安全领域的应用,同时也提醒我们,任何编程语言都可能被用于各种目的,无论是常规的还是非常规的。在实际使用时,务必注意合法性和道德问题,避免侵犯...

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    Ruby 面向对象设计实践--2013年

    《Ruby面向对象设计实践》是一本关于如何在Ruby语言中实现面向对象编程(Object-Oriented Programming, OOP)的经典著作。该书首次出版于2013年,作者是Sandi Metz,一位著名的软件工程师和培训师,在软件开发领域...

    Ruby-Savon是一个Ruby编程语言的SOAP客户端

    Ruby-Savon是Ruby编程语言中的一个强大的SOAP(Simple Object Access Protocol)客户端库,它使得在Ruby中与SOAP服务交互变得简单而高效。SOAP是一种基于XML的协议,用于在不同系统之间交换结构化和类型化的数据,常...

Global site tag (gtag.js) - Google Analytics