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