`
机器人
  • 浏览: 83426 次
  • 性别: Icon_minigender_2
  • 来自: Google
社区版块
存档分类
最新评论

Ruby网络编程(1)

阅读更多
关键字:TCPSocket TCPServer 
这个例子是这样的:客户端连上服务器后,服务器向客户端的终端显示服务器的时间,然后将来自客户端的网络连接养关闭。



my_tcp_server.rb
require 'socket'               # Get sockets from stdlib

server = TCPServer.open(2000)  # Socket to listen on port 2000
loop {                         # Servers run forever
  client = server.accept       # Wait for a client to connect
  client.puts(Time.now.ctime)  # Send the time to the client
  client.puts "Closing the connection. Bye!"
  #client.write("dd")
  client.close                 # Disconnect from the client
}


server.accept这个方法会一直挂着,直到有客户端连上来为止。

my_tcp_client.rb
require 'socket'      # Sockets are in standard library

hostname = 'localhost'
port = 2000

s = TCPSocket.open(hostname, port)

while line = s.gets   # Read lines from the socket
  puts line.chop      # And print with platform line terminator
end

#streamSock.send( "Hello\n" )  
#str = streamSock.recv( 100 )  
#print str  

s.close               # Close the socket when done


然而大多数的服务器是支持多个客户端的连接的,在Ruby中可以用线程来很容易地做到这一点。

我将以上的my_tcp_server.rb中的服务器代码修改一下:
require 'socket'                # Get sockets from stdlib

server = TCPServer.open(2000)   # Socket to listen on port 2000
loop {                          # Servers run forever
  Thread.start(server.accept) do |client|
    client.puts(Time.now.ctime) # Send the time to the client
	client.puts "Closing the connection. Bye!"
    client.close                # Disconnect from the client
  end
}

这样的话,每有一个客户端连接上来,就会在服务器端启动一个线程来处理请求。
分享到:
评论
2 楼 yangzhihuan 2009-07-18  
还有其它性能更佳的写法吗?
1 楼 yangzhihuan 2009-07-18  
一个连接一个线程的方法已经落后啦.比Java NIO差得太远了.

相关推荐

    Ruby编程语言pdf

    本书详细介绍了Ruby 1.8和1.9版本各方面的内容。... 本书还包含对Ruby平台上丰富的API的详尽介绍,并用带有详尽注释的代码演示了Ruby进行文本处理、数字运算、集合、输入/输出、网络开发和并发编程的功能。

    Ruby编程语言

    本书还包含对Ruby平台上丰富的API的详尽介绍,并用带有详尽注释的代码演示了Ruby进行文本处理、数字运算、集合、输入/输出、网络开发和并发编程的功能。  前言1  第1章导言1  1.1漫游RUBY2  1.2体验RUBY11  ...

    Ruby完全自学手册 下

    虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的应用领域包括系统管理、网络编程、图形处理、图形界面开发以及web开发等开发热门领域。希望借助于平易的讲解,让读者在学习的过程中,理解Ruby的编程...

    Ruby编程之美:实用案例深度解析.zip

    从文件操作、Web开发、网络编程到脚本自动化,Ruby都展现了其强大的功能和灵活性。通过学习和掌握这些案例中的技巧和方法,读者可以更好地应用Ruby进行实际项目开发,提高编程效率和质量。希望本文能对读者在Ruby...

    Ruby是一种强大而优雅的编程语言,以其简洁的语法、动态性、面向对象编程和丰富的类库而著称 以下是对Ruby的500字资源介绍:

    Ruby是一种强大而优雅的编程语言,以其简洁的语法、动态性、面向对象编程和...Ruby拥有丰富的标准库和第三方库,这些库提供了大量的类和方法,涵盖了文件操作、网络编程、字符串处理、正则表达式等常见任务的解决方案

    Ruby完全自学手册 源码

    虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的应用领域包括系统管理、网络编程、图形处理、图形界面开发以及web开发等开发热门领域。希望借助于平易的讲解,让读者在学习的过程中,理解Ruby的编程...

    Ruby完全自学手册 上

    虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的应用领域包括系统管理、网络编程、图形处理、图形界面开发以及web开发等开发热门领域。希望借助于平易的讲解,让读者在学习的过程中,理解Ruby的编程...

    Ruby中的Socket编程简单入门

    主要介绍了Ruby中的Socket编程简单入门,是Ruby网络编程学习中的基础知识,需要的朋友可以参考下

    [Ruby完全自学手册].邓蔚.扫描版.pdf

    超值光盘内容:《Ruby完全自学手册》源代码+《Ruby完全自学手册》视频演示+《Ruby完全自学手册》电子教案(PPT),1200余页编程技术文档(免费赠送)+45个编程专题视频讲座(免费赠送)。 系统介绍Ruby的语法、基本...

    Ruby On Rails(PDF)

    ruby on rails 网络编程书籍,PDF中文版。

    简单的Ruby中的Socket编程教程

    接下来就让我们来学习如何进行 Ruby Socket 编程 什么是 Sockets 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同

    免费的一本好书关于Ruby学习

    Ruby(中文名:红宝石)是一种简洁、灵活且富有表达力的编程语言,由日本程序员松本行弘(Matz)...6. **丰富的标准库**:Ruby 标准库提供了大量内置模块和库,涵盖了网络编程、文件操作、数据处理等各个领域,简化了开

    Ruby语言入门到精通

    全书分为三篇:第一篇介绍编程以及Ruby的基本概念,并用简单的例子快速引导读者开发真正的Ruby应用程序;第二篇讲解Ruby语言的核心概念和语法,并综合这些概念和语法,以机器人小程序为例进行了实战开发;第三篇深入...

    Ruby_on_Rails_Web_开发之旅[清晰文字pdf].part1

    分2卷压缩,另一卷在我的资源列表 本书从Ruby和Rails的历史讲起,以在Rails...本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。

    Ruby实战教程从基础到项目开发.docx

    第1部分:Ruby基础 1.1 安装Ruby 在开始之前,确保你已经安装了Ruby。你可以从Ruby官方网站下载安装包,或者使用版本管理工具如rbenv来安装。 1.2 基本语法 Ruby的语法简洁明了,支持多种编程范式。 # 打印Hello, ...

    网络编程备忘--各种常用函数色彩等

    包含所有网络编程所用到的图表:列出了他们的主要数 asp,php,ruby,css,assiic,html,css,sqlserver,javascript...

    Ruby语言入门教程

    其它编程语言的学习都主要来自于书本,而Ruby的学习却是完全经由网络。我想,回报网络的最好方式就是在网络上还没有Ruby中文书籍的时候,编著一本Ruby中文入门教材。感谢编程语言发展史上的前辈们;感谢网络论坛上...

    Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架.zip

    减少编程时候的不必要的琐碎时间,令编写程序的人高兴,是设计 Ruby 语言的 Matz 的一个首要的考虑;其次是良好的界面设计。他强调系统设计必须注重人性化,而不是一味从机器的角度设想。 “ 人们特别是电脑工程师们...

    用Ruby进行CGI编程的入门指引

    主要介绍了用Ruby进行CGI编程的入门指引,编写CGI脚本也是Ruby用于网络编程的一项基础功能,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics