• 基于tcp的socketserver,即tcp的多线程


    tcp是数据流式的,它的收发信息,是通过管道的.在进行链接时,必须双方同时答应,故有三次握手,四次断开机制
    服务端
    import socketserver #用于进行都并发,即服务端能同时接收多个客户端的链接通信
    class My_server(socketserver.BaseRequestHandler): #通讯
    def handle(self): #相当于conn,client_addr=phone.accept(),必须定义一个handle函数
    print('========>',self)
    print(self.request) #相当于conn
    print(self.client_address) #相当于client_addr
    while True: #通讯循环
    data =self.request.recv(1024)#tcp是基于数据流的,收发的消息不能为空,
    #在通讯循环中,发空消息,就会停到该处
    print(data)
    self.request.send(data.upper())


    if __name__ == '__main__': #只在本脚本中执行
    ip_port =('127.0.0.1',8083)
    obj =socketserver.ThreadingTCPServer(ip_port,My_server) #通过tcp线程的实例化对象,实际上相当于完成了买手机,绑定电话卡
    print(obj.server_address)
    print(obj.RequestHandlerClass)
    obj.serve_forever() #有一个循环,处于链接循环,相当于phone.listen(5),同时会执行handle方法

    客户端
    import socket
    phone =socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    ip_port =('127.0.0.1',8083)
    phone.connect(ip_port)

    while True:
    msg =input('>>>: ').strip()
    if not msg:continue
    phone.send(msg.encode('utf-8'))
    data =phone.recv(1024)
    print(data.decode('utf-8'))

    phone.close()
  • 相关阅读:
    UML画图
    UML笔记
    电脑启动顺序
    评教有感
    部署图
    活动图
    给八期授课之主板电池的思考
    给八期授课之人员分配的思考
    构件图
    cocos2dx获得机器语言
  • 原文地址:https://www.cnblogs.com/IQ-Python/p/6814546.html
Copyright © 2020-2023  润新知