服务端的代码
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 }