zoukankan      html  css  js  c++  java
  • python之多并发socket(zz)

    本文转载自:http://www.cnblogs.com/bainianminguo/p/7337210.html

    先看socket多并发的服务端的代码,这里是用多线程实现的多并发socketserver

    import socketserver
    
    # socketserver有四个基本的类,后两个不常用,这4个类处理并发请求都是同步的,他们其实不是多线程的,
    # 他们只是把socke封装了一下,加了一些方法,这里还没有实现多并发和多线程
    # 这些方法不适用每个请求都耗费长时间才能完成
    
    
    # socketserver.TCPServer
    # socketserver.UDPServer
    # socketserver.UnixStreamServer
    # socketserver.UnixDatagramServer
    # socketserver.ForkingMixIn
    # socketserver.ThreadingMixIn
    
    # ========================================================================================================
    # 我们真正要用的下面这4个方法
    # 多进程的socketserver
    # socketserver.ForkingTCPServer
    # socketserver.ForkingUDPServer
    
    # 多进程的socketserver
    # socketserver.ThreadingTCPServer
    # socketserver.ThreadingUDPServer
    
    
    # ========================================================================================================
    class MyTcpServerClass(socketserver.BaseRequestHandler):
        def handle(self):
            print("waiting for new connect:")
            print("new client :",self.client_address)
            while True:
                try:
                    data=self.request.recv(1024)
                    print("the client:",self.client_address,str(data,encoding='utf-8'))
                except Exception:
                    print("the client [%s] is unconnected!"%(self.client_address[1]))
                    self.request.close()
                    break
    
    
    
    if __name__=='__main__':
        ipbind=('127.0.0.1',2345)
        server=socketserver.ThreadingTCPServer(ipbind,MyTcpServerClass)
        server.serve_forever()

    然后看下客户端的代码:

    import socket
    
    ipbind=('127.0.0.1',2345)
    
    c=socket.socket()
    c.connect(ipbind)
    
    while True:
        c_input=input("客户端:")
        c.send(bytes(c_input,encoding='utf-8'))
        s_send=c.recv(1024)
        print("服务端:",str(s_send,encoding='utf-8'))
  • 相关阅读:
    atcoder做题记录
    CSP-S2021题解
    记录近期JAVA后端开发面试总结
    技术文章系列汇总(csdn转载)
    个人技术文章系列汇总(简书)
    个人技术文章系列汇总(csdn原创)
    解密Kafka吞吐量高的原因
    Java 常见面试题整理
    restemplate调用失败提示 处理方法
    Keil MDK忽略警告:文件末尾空白行警告
  • 原文地址:https://www.cnblogs.com/aomi/p/7574281.html
Copyright © 2011-2022 走看看