1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python|使用 TCP 协议实现智能聊天机器人

Python|使用 TCP 协议实现智能聊天机器人

时间:2019-11-14 15:46:40

相关推荐

Python|使用 TCP 协议实现智能聊天机器人

实验内容:

1、熟悉标准库 socket 的用法。 2、熟悉 TCP 协议工作原理。 3、理解端口号的概念与作用。 4、熟悉 Socket 编程。编写聊天程序的服务端代码和客户端代码。完成后,先启动服务端代码,然后启动客户 端程序用输入问题,服务端可以返回相应的答案。要求服务端代码具有一定的智能,能够根 据不完整的问题识别客户端真正要问的问题。

下面展示参考代码。

import socket from os.path import commonprefix words = {'how are you?':'Fine,thank you.', 'how old are you?':'38', 'what is your name?':'Dong FuGuo', "what's your name?":'Dong FuGuo', 'where do you work?':'University', 'bye':'Bye'} HOST = '' PORT = 50007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定 socket s.bind((HOST, PORT)) # 开始监听一个客户端连接 s.listen(1) print('Listening on port:',PORT) conn, addr = s.accept() print('Connected by', addr) # 开始聊天 while True: data = conn.recv(1024).decode() if not data: breakprint('Received message:', data) # 尽量猜测对方要表达的真正意思 m = 0 key = '' for k in words.keys(): # 删除多余的空白字符 data = ' '.join(data.split()) # 与某个“键”非常接近,就直接返回 if len(commonprefix([k, data])) > len(k)*0.7: key = k break # 使用选择法,选择一个重合度较高的“键” length = len(set(data.split())&set(k.split())) if length > m: m = length key = k # 选择合适的信息进行回复 conn.sendall(words.get(key, 'Sorry.').encode()) conn.close() s.close()客户端代码(chatClient.py):import socket import sys # 服务端主机 IP 地址和端口号 HOST = '127.0.0.1' PORT = 50007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try:# 连接服务器 s.connect((HOST, PORT)) except Exception as e: print('Server not found or not open') sys.exit() while True: c = input('Input the content you want to send:') # 发送数据 s.sendall(c.encode()) # 从服务端接收数据 data = s.recv(1024) data = data.decode() print('Received:', data) if c.lower() == 'bye':break # 关闭连接 s.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。