美文网首页python爬虫码农的世界python热爱者
socket实现在线聊天机器人!装逼神器socket!成就感满满

socket实现在线聊天机器人!装逼神器socket!成就感满满

作者: Python树苗 | 来源:发表于2018-05-26 15:10 被阅读47次

     什么是socket?

    说到网络编程,难免要提到socket?

    那什么是socket呢,中文名叫"套接字",更难理解了吧。

    通俗来讲,socket表示一个网络连接,通过这个连接,使得主机间或者一台计算机上的进程间可以通讯。

    不管是不同主机,还是同一主机。既然是通信,必定有一个发送方,一个接收方。对应一个客户端,和一个服务端。

    . socket工作流程图解

    . socket公共函数汇总

    . 实战:搭建在线聊天机器人

    通过上面的学习,我们知道,同主机下或不同主机下的两个进程要进行通信(TCP/UDP,不管是消息传输还是文件传输),必定要借助socket这个桥梁。

    那接下来,我们就一起来完成这个实战项目:在线聊天机器人。

    服务端

    1import socket2import time3import threading4import requests5import json678class ChatServer:9 def __init__(self, port):10 # 绑定服务器的ip和端口,注意以tuple的形式11 self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)12 self.socket.bind(("0.0.0.0", port))13 self.socket.listen(5)14 # 图灵机器人,授权码15 self.key = "your tuling robot key"16 print("正在监听 127.0.0.1 :{}...".format(port))1718 def tcplink(self, sock, addr):19 # 每次连接,开始聊天前,先欢迎下。20 sock.send("你好,欢迎来到机器人聊天器!".encode("utf-8"))21 while True:22 data = sock.recv(1024).decode("utf-8")23 print(sock.getpeername())24 print(sock.getsockname())25 print(sock.fileno())26 username = data.split("::")[0]27 msg = data.split("::")[1]28 if msg == "exit":29 break30 if msg:31 print("【"+username+"】 "+time.strftime('%Y-%m-%d:%H:%M:%S',time.localtime(time.time())))32 print(msg)33 response = self.get_response(msg)34 sock.send(response.encode("utf-8"))35 sock.close()36 print("与 {} 结束聊天!".format(username))3738 def get_response(self, info):39 # 调用图灵机器人API40 url = 'http://www.tuling123.com/openapi/api?key=' + self.key + '&info=' + info41 res = requests.get(url)42 res.encoding = 'utf-8'43 jd = json.loads(res.text)44 return jd['text']4546 def main(self):47 while True:48 sock, addr = self.socket.accept()49 t=threading.Thread(target=self.tcplink, args=(sock, addr))50 t.start()5152if __name__ == '__main__':53 cs = ChatServer(port=9999)54 cs.main()

    将服务端程序跑起来,然后运行客户端,看下效果。

    至此,我们看到我们机器人已经正常和我们调侃。

    get到了吗?欢迎大家关注我的博客或者公众号:https://home.cnblogs.com/u/Python1234/ “Python学习交流”

    欢迎加入我的千人交流学习答疑群:125240963

    原文链接:

    相关文章

      网友评论

        本文标题:socket实现在线聊天机器人!装逼神器socket!成就感满满

        本文链接:https://www.haomeiwen.com/subject/tvymjftx.html