zoukankan      html  css  js  c++  java
  • 多进程socket实现并发连接

    #_*_coding:utf-8_*_
    #服务器端
    from socket import * import subprocess import struct from multiprocessing import Process ip_port=('127.0.0.1',8080) BUFSIZE=1024 tcp_socket_server=socket(AF_INET,SOCK_STREAM) tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) tcp_socket_server.bind(ip_port) tcp_socket_server.listen(5) # # while True: # conn,addr=tcp_socket_server.accept() # print('客户端',addr) def talk(conn,addr): while True: cmd=conn.recv(BUFSIZE) print(cmd.decode('utf-8')) if len(cmd) == 0:break res=subprocess.Popen(cmd.decode('utf-8'),shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE) stderr=res.stderr.read() if stderr: back_msg=stderr else: back_msg=res.stdout.read() print(len(back_msg)) conn.send(struct.pack('i',len(back_msg))) #先发送长度 conn.sendall(back_msg) # conn.close() if __name__=='__main__': while True: conn,addr=tcp_socket_server.accept() p=Process(target=talk,args=(conn,addr),name="hello") p.start() #启动一个子进程 print('客户端',addr) print(p.name,p.pid) # 服务端
    Process():由该类实例化得到的对象,表示一个子进程中的任务(尚未启动)
    
    
    强调:
    1. 需要使用关键字的方式来指定参数
    2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号
    
    

    客户端 ('127.0.0.1', 64990)
    hello 7120                        #2个客户端,启动2个子进程
    客户端 ('127.0.0.1', 64991)
    hello 7172
    dir
    777
    dir
    777

     
  • 相关阅读:
    用WinForm写的员工考勤项目!!!!!!
    洛谷P1892《[BOI2003]团伙》
    洛谷P1821《[USACO07FEB]银牛派对Silver Cow Party》
    洛谷P1149《火柴棒等式》
    2017 国庆清北刷题冲刺班《角谷猜想》
    洛谷P2330《[SCOI2005]繁忙的都市》
    洛谷P1955《[NOI2015]程序自动分析》
    洛谷P1536《村村通》
    Windows 10 体验记
    洛谷P1102《A-B数对》
  • 原文地址:https://www.cnblogs.com/wuxi9864/p/9974635.html
Copyright © 2011-2022 走看看