• python--socketserver


    用socketserver,实现多人聊天的功能

    import socketserver
    class MyServer(socketserver.BaseRequestHandler):
        def handle(self):
            while True:
                msg=self.request.recv(1024).decode('utf-8')
                if msg=='q':break
                print(msg)
                info=input('%s>>>'%msg[:2])
                self.request.send(info.encode('utf-8'))
    if __name__=='__main__':
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer)
        server.serve_forever()
    
    
    import socketserver
    class Myserver(socketserver.BaseRequestHandler):   #建立一个类,继承socketserver.BaseRequestHandler
        def handle(self):    #必须有这个方法名 ,因为源码中会调用这个方法
            while True:      #self.request 类似于conn
                msg=self.request.recv(1024).decode('utf-8')
                if msg=='q':
                    break
                print(msg)
                cmd=input('%s>>'%msg[:2])
                self.request.send(cmd.encode('utf-8'))
    
    if __name__=='__main__':
        server=socketserver.ThreadingTCPServer(('127.0.0.1',8080),Myserver)#启动线程
        server.serve_forever()  #让线程一致运行
    # 设置allow_reuse_address允许服务器重用地址
        socketserver.TCPServer.allow_reuse_address = True
        # 创建一个server, 将服务地址绑定到127.0.0.1:9999
        server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), Myserver)
        # 让server永远运行下去,除非强制停止程序
        server.serve_forever()
    server
    import socket
    sk=socket.socket()
    sk.connect(('127.0.0.1',8080))
    while True:
        msg=input('>>>')
        if msg=='q':
            sk.send(b'q')
            break
        sk.send(('美团:'+msg).encode('utf-8'))
        ret=sk.recv(1024).decode('utf-8')
        print(ret)
    clint1
    import socket
    sk=socket.socket()
    sk.connect(('127.0.0.1',8080))
    while True:
        msg=input('>>>')
        if msg=='q':
            sk.send(b'q')
            break
        sk.send(('大众点评:'+msg).encode('utf-8'))
        ret=sk.recv(1024).decode('utf-8')
        print(ret)
    clint2
  • 相关阅读:
    005 Stream的创建
    006 虚拟主机
    002 nginx的进程模型
    001 胡说八道
    001 nginx的简介和安装
    004 docker配置国内镜像站
    012 SSH
    发放失败,此请求可能存在风险,已被微信拦截【未解决】
    项目使用Nuget,然后SVN checkout后显示缺少引用
    使用存储过程非常慢,但是直接执行SQL很快
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/8414300.html
Copyright © 2020-2023  润新知