zoukankan      html  css  js  c++  java
  • 基于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()
  • 相关阅读:
    Java斗地主--001版本
    集合----方法的可变参数
    浅谈--Java编译期异常+运行期异常
    JavaSE编程基础(一)
    JavaSE编程基础(三)
    JavaSE编程基础(二)
    软件测试(三十)
    软件测试(二十九)
    软件测试(二十七)
    软件测试(二十八)
  • 原文地址:https://www.cnblogs.com/IQ-Python/p/6814546.html
Copyright © 2011-2022 走看看