4.利用socket实现聊天机器人

来源:互联网 发布:电子处方软件app 编辑:程序博客网 时间:2024/06/01 10:05

服务器端

import socketsk = socket.socket()sk.bind(('127.0.0.1', 9999))#最大连接数sk.listen(5)while True:    #接受连接和客户端地址信息    conn, address = sk.accept()    conn.sendall(bytes('欢迎致电', encoding='utf-8'))    while True:        ret_bytes = conn.recv(1024)        ret_str = str(ret_bytes, encoding='utf-8')        if ret_str == 'q':            break        conn.sendall(bytes(ret_str+'说得对', encoding='utf-8'))
客户端

import socketobj = socket.socket()obj.connect(('127.0.0.1', 9999))ret_bytes = obj.recv(1024)ret_str = str(ret_bytes, encoding='utf-8')print(ret_str)while True:    inp = input('请输入要发送的内容:')    if inp == 'q':        obj.sendall(bytes(inp, encoding='utf-8'))        break    else:        obj.sendall(bytes(inp, encoding='utf-8'))        ret = str(obj.recv(1024), encoding='utf-8')        print(ret)obj.close()

如果要实现并发操作,需修改服务器端,引入socketsever模块:

import socketserver'''并发处理多个客户端请求使用:1.创建类,必须继承2.必须用 handle方法3.server_forever'''class MyServer(socketserver.BaseRequestHandler):    def handle(self):        conn = self.request        conn.sendall(bytes('欢迎致电', encoding='utf-8'))        while True:            ret_bytes = conn.recv(1024)            ret_str = str(ret_bytes, encoding='utf-8')            if ret_str == 'q':                break            conn.sendall(bytes(ret_str+'说得对', encoding='utf-8'))if __name__ == '__main__':    sever = socketserver.ThreadingTCPServer(('127.0.0.1', 9999), MyServer)    sever.serve_forever()

原创粉丝点击