`
机器人
  • 浏览: 85136 次
  • 性别: 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编程,Ruby编程,

    - **高级主题**:包括元编程、线程、网络编程等内容,适合想要进一步深入了解Ruby的开发者。 - **实践案例**:通过具体的项目案例来展示如何应用Ruby解决实际问题。 3. **书籍评价**: - 众多知名的软件工程师和...

    Ruby编程语言pdf

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

    使用Python Lua和Ruby语言进行游戏编程

    游戏编程是一种将编程技术应用于创建电子游戏的过程,涵盖了各种领域,包括图形设计、音效、人工智能、网络编程等。在本主题中,我们将探讨三种语言——Python、Lua和Ruby在游戏开发中的应用。 首先,Python以其...

    Ruby语言全套教程+基础语法+面向对象编程+网络编程等

    Ruby基础语法.pdf Ruby变量与数据类型.pdf Ruby控制结构.pdf Ruby函数与方法.pdf ...Ruby网络编程.pdf Ruby数据库交互.pdf Ruby测试框架.pdf RubyWeb框架Rails入门.pdf Ruby高级特性.pdf Ruby性能优化与最佳实践.pdf

    Ruby基础语法+Ruby变量与数据类型+Ruby控制结构+Ruby函数与方法+Ruby面向对象编程等全套教程

    Ruby基础语法 Ruby变量与数据类型 Ruby控制结构 Ruby函数与方法 Ruby面向对象编程 Ruby模块与包 ...Ruby网络编程 Ruby数据库交互 Ruby测试框架 RubyWeb框架Rails入门 Ruby高级特性 Ruby性能优化与最佳实践

    Ruby编程语言_涵盖Ruby 1.8和1.9

    1. 面向对象:Ruby是一种纯粹的面向对象语言,所有数据都是对象,包括基本类型,如整数和字符串。 2. 元编程:Ruby的强大之处在于其内置的元编程能力,允许在运行时修改和创建类及对象。 3. 动态性:Ruby的动态性...

    Ruby编程语言

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

    Ruby自动化脚本实现网络拓扑映射

    Ruby作为一种灵活且功能强大的编程语言,在实现网络自动化脚本方面展现出巨大潜力。通过设计合理的脚本,不仅可以高效地完成网络拓扑映射,还能在此基础上进一步拓展至故障监测、性能分析等领域,为网络管理和运维...

    Ruby 编程

    Ruby编程是一种高级、面向对象的脚本语言,以其简洁、优雅的语法和强大的元编程能力而受到程序员的喜爱。Ruby的设计理念强调代码的可读性和自然表达性,这使得它成为初学者入门的理想选择。"Ruby 编程"的资源特别...

    Ruby-LightIO是一个ruby网络库它结合了rubyfiber和快速IOeventloop

    LightIO设计时考虑到了与其他Ruby网络库的兼容性,如Socketry,这使得开发者可以利用已有的网络编程经验,无缝过渡到LightIO。例如,`socketry-lightio-b8a7197`这个文件可能是一个特定版本的Socketry库与LightIO的...

    Ruby完全自学手册 下

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

    Ruby编程语言详解(内容丰富)

    - **特点**: Ruby支持网络编程,可用于开发聊天程序和实时通讯系统。 - **示例**: 实时消息推送服务。 - **优点**: 高效的网络处理能力。 #### 三、Ruby的语法结构 **1. 变量与数据类型** - **特点**: Ruby...

    Ruby+编程语言的基础知识:变量、运算符、流程控制

    Ruby广泛应用于网络应用程序开发,特别是Ruby on Rails框架(简称Rails)的出现,大大提高了Web应用开发的效率。 在Ruby编程语言的基础知识中,变量、运算符和流程控制是三个核心概念,下面将详细解释这些概念: #...

    后端必备+服务器网络编程指南

    《后端必备+服务器网络编程指南》是一本针对后端工程师深入学习服务器网络编程和性能调优的专业书籍。它涵盖了从基础知识到高级实践的广泛内容,旨在帮助读者全面提升在这一领域的技能。 首先,我们来探讨“后端”...

    Ruby编程语言简介,资源由网络分享整理,如有侵权请联系我

    Ruby是一种面向对象的、动态类型的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年设计并开发。它强调简洁、优雅的语法,旨在提高程序员的生产力,使代码更易读、易写。Ruby语言在设计时就考虑到了人性化,...

    从基础到实战:Ruby编程全指南及项目实现

    内容概要:本文是一份全面的Ruby编程教程,涵盖了从基础入门到高级特性的所有内容。文章首先介绍了Ruby语言的特点和优势,接着详细讲解了环境搭建、基本语法、面向对象编程等内容。随后,通过几个实用的项目案例(如...

    Ruby多线程编程初步入门

    ### Ruby多线程编程初步入门 #### 一、引言 多线程编程是现代软件开发中的重要组成部分,尤其对于需要高效并发处理的任务而言更是如此。Ruby作为一种灵活且功能强大的编程语言,在支持多线程方面提供了丰富的工具...

Global site tag (gtag.js) - Google Analytics