码迷,mamicode.com
首页 > 编程语言 > 详细

python,应用socketserver模块实现并发聊天程序

时间:2019-12-14 11:55:25      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:inpu   base   命令   request   封装   nec   就是   ever   ase   

server.py
import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            conn = self.request
            while True:
                data = conn.recv(1024)
                if str(data,‘utf8‘) == ‘q‘:
                    break
                print(str(data,‘utf8‘))
                inp = input(‘>>>‘)
                conn.send(bytes(inp,‘utf8‘))
            conn.close()
if __name__ == ‘__main__‘:
    server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,8000),MyServer)
    server.serve_forever()
client.py
import socket
sk = socket.socket()
address = (‘127.0.0.1‘,8000)
sk.connect(address)
while True:
    inp = input(‘>>>‘)
    if inp == ‘q‘:
        print(‘Bye-bye‘)
        break
    sk.send(bytes(inp,‘utf8‘))
    data = sk.recv(1024)
    print(str(data,‘utf8‘))

解析:server.py首先调用了socketserver模块,建立一个自己的类MyServer并继承了socketserver.BaseRequestHandler,重写该类的hander方法,server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,8000),MyServer)命令实现了对IP地址,端口和协议的封装,将用户自己要实现的并发聊天代码写进handle方法,程序执行的时候就是到handle方法中去找代码执行.从而实现了并发聊天.

python,应用socketserver模块实现并发聊天程序

标签:inpu   base   命令   request   封装   nec   就是   ever   ase   

原文地址:https://www.cnblogs.com/iceberg710815/p/12038304.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!