zoukankan      html  css  js  c++  java
  • (网络编程)socketserver模块服务端实现并发

    基于tcp的套接字(实现并发),关键就是两个循环,一个链接循环,一个通信循环

    基于udp的套接字(不是正真意义上的并发,实现真并发)

    socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题)

    # 服务端必须满足至少三点:
    # 1. 绑定一个固定的ip和port
    # 2. 一直对外提供服务,稳定运行
    # 3. 能够支持并发
    import socketserver

    # 自定义类用来处理通信循环
    class MyTCPhanler(socketserver.BaseRequestHandler):
    def handle(self):
    while True:
    try:
    data = self.request.recv(1024)
    if len(data) == 0: break # 针对linux系统
    print('-->收到客户端的消息: ', data)
    self.request.send(data.upper())
    except ConnectionResetError:
    break

    self.request.close()


    if __name__ == '__main__':
    server=socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhanler)
      
    #   
    # 1 server_address, RequestHandlerClass
    # 2 拿到tcp套接字对象 s.socket=p
    # 3 bind
    # 4 listen

    server.serve_forever() # 链接循环
      #     1 conn,adress=p.accept()
        #     2 拿conn创线程 target=xxxxx  里面调MyTCPhanler


    import socketserver

    class MyUdphandler(socketserver.BaseRequestHandler):
    def handle(self):
    data,sock=self.request
    sock.sendto(data.upper(),self.client_address)

    if __name__ == '__main__':
    server=socketserver.ThreadingUDPServer(('127.0.0.1',8081),MyUdphandler)
    server.serve_forever()
  • 相关阅读:
    哎,这两天的心情,真是太差了
    昨天跌停价冲进去,今天继续跌停
    好几天没有干正事了,是否已经堕落了?
    继续通宵加班
    Map集合的遍历方式
    List,Set,Map,propertes注入方式
    java异常捕获以及处理
    List、Set、Map、数组互转
    Java并发编程:深入剖析ThreadLocal
    Exceotion与RuntimeException的区别
  • 原文地址:https://www.cnblogs.com/3sss-ss-s/p/9584414.html
Copyright © 2011-2022 走看看