ruby CS版本的wobot

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

猜你喜欢

转载自mushme.iteye.com/blog/2246073
今日推荐