看到了socket,顺便改装了下wobot,目前还不支持客户端输入中文,待解决。
服务端的代码
require 'socket' # 获取socket标准库
#puts "I'm wobot,欢迎和我随便聊点什么。"
time = Time.new
questionAliasSetting = Hash.new #声明一个hash
#开始初始化问题和答案
questionAliasSetting.store("你好,很高兴见到你。",Array["你好","hello","您好","你好啊","hi"])
questionAliasSetting.store("我是leo的小兄弟heo。",Array["名字","你叫什么","你是谁","你的名字是什么","姓名","name","我问你是谁","我问你叫什么"])
questionAliasSetting.store("鹅鹅鹅, 曲项向天歌。 白毛浮绿水, 红掌拨清波",Array["王洛宾鹅","关于鹅的诗","鹅","鹅鹅鹅","eee"])
questionAliasSetting.store(time.strftime("%Y-%m-%d"),Array["日期","当前日期","今天","date","today"])
questionAliasSetting.store(time.strftime("%Y-%m-%d %H:%M:%S"),Array["时间","当前时间","现在是","now","time"])
qSetting=Hash.new
questionAliasSetting.each_key do |qamswer|
questionAliasSetting[qamswer].each do |qquestion|
qSetting.store(qquestion,qamswer);
end
end
noAnswer = Array["你问的问题我不知道哪","没听明白你说的","我搞不懂你说的哪","不清楚","不知道"]#没有匹配答案的时候,显示这个
server = TCPServer.open(2000) # Socket 监听端口为 2000
puts "服务端口启动成功,可以接收请求了。"
loop { # 永久运行服务
Thread.start(server.accept) do |client|# 等待客户端连接
qput = client.gets().chomp()
qput = qput.encode("UTF-8")
puts qput;
if qSetting[qput]!= nil
client.puts " ->"+qSetting[qput]
else
client.puts " ->"+noAnswer[rand(noAnswer.length)]
end
client.close # 关闭客户端连接
end
}
客户端的代码
require 'socket' # Sockets 是标准库
hostname = 'localhost'
port = 2000
loop{
qput = gets.chomp()
qput = qput.encode("UTF-8")
s = TCPSocket.open(hostname, port)
s.puts qput
while line = s.gets # 从 socket 中读取每行数据
puts line.chop # 打印到终端
end
s.close # 关闭 socket
}
分享到:
相关推荐
在IT行业中,管理和切换Ruby版本是一项常见的任务,特别是在开发环境中,不同的项目可能依赖于不同版本的Ruby。`RVM`(Ruby Version Manager)是解决这一问题的利器,它允许开发者在多个Ruby版本之间轻松切换。本文...
在IT行业中,尤其是在Web开发领域,Ruby是Rails框架的基础,因此掌握Ruby的安装和管理多版本是非常重要的。 标题“ruby多版本安装包rar”暗示我们将讨论如何在Windows系统上安装和管理多个Ruby版本。RubyInstaller...
本指南将详细讲解如何在Ubuntu系统上安装Ruby 2.1.5这一特定版本。 首先,确保你的Ubuntu系统是最新的。打开终端并运行以下命令来更新系统软件包: ```shell sudo apt-get update sudo apt-get upgrade ``` 接...
sencha cmd 需要的第三方包,是一个完全面向对象的语言哟,堪比perl
Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。 您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro Matsumoto...
基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby编写的命令行注入版本.zip基于Ruby...
ruby-build 是一个 rbenv 插件,它提供了一个 rbenv install 命令来在类 UNIX 系统上编译和安装不同版本的 Ruby。你还可以在需要精确控制 Ruby 版本安装的环境中使用不带 rbenv 的 ruby-build。用法在开始之前,...
执行命令`ruby -v`检查Ruby版本,应显示为`ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]`,表明安装成功。 #### 自定义升级策略 **优势分析** 手动编译安装的最大优势在于提供了极高的灵活性。当新的...
在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build`来编译和安装Ruby。 `rbenv`是一个用于管理全局或用户级别的Ruby版本的工具,它...
Ruby 1.8.6 是一个古老的 Ruby 语言版本,发布于2009年,是许多开发者早期学习和构建应用程序的重要版本。Ruby 是一种面向对象的、动态类型的编程语言,以其简洁、清晰的语法和强大的元编程能力而受到欢迎。在 Ruby ...
标题 "Ruby-fryfish" 提供的信息表明,这是一个与 Ruby 语言相关的项目,具体来说,它是一个用于管理 Ruby 版本的工具。在 IT 领域,版本管理器允许开发者在不同的项目之间轻松切换所需的 Ruby 版本,确保每个项目都...
Ruby 1.9.3 p484 是一个重要的编程语言版本,专为Windows平台设计,提供了稳定且高效的运行环境。Ruby是一种动态、面向对象的脚本语言,因其简洁、优雅的语法和强大的元编程能力而深受开发者喜爱。在1.9.3这个版本中...
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、...
ruby、rvm离线安装包 可用于 redis5.0 以下版本的集群安装部署,解压后,对相关资源进行编译安装即可,...ruby 版本号为:2.5.1 rvm 版本号为:1.29.9 另附上两个 redis 的 gem 包 redis-4.0.3.gem、redis-5.0.6.gem
4. 验证安装:安装完成后,打开命令行窗口,输入`ruby -v`和`gem -v`来验证Ruby和Gem(Ruby的包管理器)是否正确安装并显示对应的版本号。 Ruby的Gem包管理器用于安装和管理Ruby库,比如Rails框架。在Ruby环境中,...
Ruby 1.9 的发布对Ruby社区带来了显著的变化,尤其是其与之前的1.8版本之间的不兼容性。这种不兼容性源于对Ruby语言及其核心库的深入修改,目的是提升语言性能和规范。Ruby 1.9.0的推出并非完全稳定,Matz,即Ruby的...
标题 "ruby 1.8.7 rails 2.3.4" 提及的是 Ruby 语言的一个较旧版本(1.8.7)以及与其兼容的 Rails 框架的老版本(2.3.4)。Ruby 是一种面向对象的、动态类型的编程语言,而 Rails 是一个基于 MVC(模型-视图-控制器...
Ruby 2.7.0是这个语言的一个稳定版本,发布于2020年,它带来了许多改进和新特性,旨在提高性能、增强开发者体验以及保持向后兼容性。 在Ruby 2.7.0中,主要更新包括: 1. **管道操作符(Pipeline Operator)**: ...
Ruby Ruby Ruby Ruby Ruby Ruby
Ruby Runtime 插件允许你在 Jenkins 中配置和管理不同的 Ruby 版本,确保你的构建任务可以在正确的环境中执行。 首先,我们需要理解 Jenkins 是一个开源的持续集成和持续部署工具,它能够自动化软件的构建、测试和...