ruby CS版本的wobot

在本次更新中,我们对Wobot进行了改进,加入了Socket功能。然而,客户端暂时还无法输入中文,这个问题有待解决。服务端使用了标准的socket库进行通信,并提供了基本的响应功能。同时,客户端可以通过socket与服务端进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看到了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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值