zoukankan      html  css  js  c++  java
  • day32-socketserver

    #socketserver 是在socket基础上进行了封装,它让server可以实时跟多个client进行通信。
    #thread线程:一个程序有一个线程,一个线程是调度cpu的最小单位。程序运行才产生线程,不运行就不产生。
    #如果启用多个线程去接收多个client的请求,就能实现并发的效果。
    
    # server:
    import socketserver
    class MyServer(socketserver.BaseRequestHandler):  #必须继承此父类
        def handle(self):                             #必须定义此函数,self.request相当于conn
            while True:
                msg = self.request.recv(1024).decode('utf-8')
                print(msg)
                if msg == 'q':
                    break
                info = input('server:')
                self.request.send(info.encode('utf-8'))
    
    if __name__ == '__main__':
        server = socketserver.ThreadingTCPServer(('127.0.0.1',8888),MyServer) #实例化对象 = 类()
        server.serve_forever()
    
    #client1:
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8888))
    
    while True:
        info = input('client1:')
        if info == 'q':
            sk.send(info.encode('utf-8'))
            break
        sk.send(info.encode('utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        print(ret)
    
    sk.close()
    
    #client2:
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',8888))
    
    while True:
        info = input('client2:')
        if info == 'q':
            sk.send(info.encode('utf-8'))
            break
        sk.send(info.encode('utf-8'))
        ret = sk.recv(1024).decode('utf-8')
        print(ret)
    
    sk.close()
  • 相关阅读:
    移动运营四:如何优化页面布局
    移动运营三:如何进行场景洞察
    移动运营二:如何更加了解你的用户
    移动运营一:如何进行运营效果分析
    操作系统的系统调用
    从图灵机到操作系统的启动
    伸展树(splay tree)
    AVL树
    二叉搜索树
    表达式树
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/11417772.html
Copyright © 2011-2022 走看看