最近在研究soctet模块的过程中,尝试做个小的练习,第一反应是做个类似qq或者微信的即时聊天,这个需求相对比较简单,采用UDP协议很快就可以实现,为了提高点难度,于是决定尝试模拟淘宝的自动回复功能,决定要实现以下几个功能:
1.客户端输入问题,抓取关键词后自动回复
2.关键词的回复,也就是话术的内容,放到txt文档中,可以根据固定的格式增删改查,比如在txt文档中增加或者减少内容,代码执行不受影响
3.聊天结束后,自动保存聊天记录
先说下代码结构吧:
读取要回复的内容
生成关键词列表
起server服务
开始记录时间
接收信息
while 循环判断关键词
|—如果输入q,bye,再见等直接退出
|—否则,循环匹配关键词列表中的字段
|—如果匹配成功,打印对应字典的值
|—不匹配,打印字典中对应的”其他“对应的值
用到的知识点:
1.socker模块
socket.bind() 将套接字绑定到地址
socker.listen() 开始监听TCP传入连接
s.accept() 接受TCP连接并返回(conn,address)
s.connect(address) 连接到address处的套接字
s.recv(bufsize[,flag]) 接受TCP套接字的数据
s.send(string[,flag]) 发送TCP数据
2.json模块
json.load(f) 从文件中导入数据,因为导入的是字典类型的数据,所以用了json模块
第一步:json导入关键词,生成关键词列表
import json
import socket
import time
print('欢迎光临XXX天猫店,很高兴为您服务\n')
# 导入关键词列表
answer_list=[]
with open('answer','r',encoding='utf-8') as f:
dic=json.load(f)
for i in dic:
answer_list.append(i)
第二步:server端服务,同时开始记录聊天记录
sk=socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr=sk.accept()
conn