欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

socket中的TCP编程(调用免费聊天的机器人实现自动回复)

发布时间:2024/3/13 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 socket中的TCP编程(调用免费聊天的机器人实现自动回复) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

        socket中的TCP编程(调用免费聊天的机器人实现自动回复)

在无聊时间复习了socket编程,写了这个简易代码!!注意要在联网状态下跑

1:服务器模块:

import socket import requestsimport random #自动生成回复语句 def get_response_message(msg):'''#api链接地址,我调用的是青云客,免费可以使用1000条/h,还可以无密钥智能机器人API接口说明 #支持功能:天气、翻译、藏头诗、笑话、歌词、计算、域名信息/备案/收录查询、IP查询、手机号码归属、人工智能聊天 接口地址:http://api.qingyunke.com/api.php?key=free&appid=0&msg=关键词key 固定参数freeappid 设置为0,表示智能识别,可忽略此参数msg 关键词,请参考下方参数示例,该参数可智能识别,该值请经过 urlencode 处理后再提交 返回结果:{"result":0,"content":"内容"}result 状态,0表示正常,其它数字表示错误content 信息内容''' apiUrl = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg='+msgtry:#获取机器人的回复信息r = requests.post(apiUrl).json()#print(r)return r.get('content')except:returndef main():#本机运行HOST=''PORT = 5006s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((HOST,PORT))s.listen()print('listen at port:',PORT)conn,addr = s.accept()print('connected by',addr)while True:data = conn.recv(1024)data = data.decode()if not data:breakprint('Received message:',data)if data =='bye':conn.sendall('好的,byebye!!!'.encode())else:conn.sendall(get_response_message(data).encode())conn.close()s.close()if __name__ == '__main__':main()

2:客户端模块

import socket #ip地址以及端口 HOST='127.0.0.1' PORT = 5006 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('recvied data:',data)#chat end flagif c.lower()=='bye':break s.close()

3聊天记录截图

 

 也可以为客户机调用机器人接口

总结

以上是生活随笔为你收集整理的socket中的TCP编程(调用免费聊天的机器人实现自动回复)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。