zoukankan      html  css  js  c++  java
  • 多进程并行实现socket并发代码

    服务端:

    # Author:Winter Liu is coming!
    import socket
    from multiprocessing import Process
    
    
    def func(conn,addr):
        print("{} is connect!".format(addr))
        try:
            while True:
                msg = conn.recv(1024).decode("utf-8")
                conn.send(msg.upper().encode("utf-8"))
        except ConnectionResetError:
            conn.close()
            print("{} is close!".format(addr))
    
    
    # Windows系统下需要加验证
    if __name__ == "__main__": server = socket.socket() server.bind(("127.0.0.1",10002)) server.listen() while True: conn, addr = server.accept()
         # 进程创建 p
    = Process(target=func, args=(conn, addr)) p.start() # 异步非阻塞运行,交给操作系统执行进程,主进程继续执行

    客户端:

    # Author:Winter Liu is coming!
    import socket
    import time
    
    client = socket.socket()
    client.connect(("127.0.0.1", 10002))
    
    while True:
        client.send("hello".encode("utf-8"))
        msg = client.recv(1024).decode("utf-8")
        print(msg)
        time.sleep(0.5)
    
    client.close()

    ------------恢复内容开始------------

    服务端:

    # Author:Winter Liu is coming!
    import socket
    from multiprocessing import Process
    
    
    def func(conn,addr):
        print("{} is connect!".format(addr))
        try:
            while True:
                msg = conn.recv(1024).decode("utf-8")
                conn.send(msg.upper().encode("utf-8"))
        except ConnectionResetError:
            conn.close()
            print("{} is close!".format(addr))
    
    
    if __name__ == "__main__":
        server = socket.socket()
        server.bind(("127.0.0.1",10002))
        server.listen()
    
        while True:
            conn, addr = server.accept()
            p = Process(target=func, args=(conn, addr))
            p.start()

    客户端:

    # Author:Winter Liu is coming!
    import socket
    import time
    
    client = socket.socket()
    client.connect(("127.0.0.1", 10002))
    
    while True:
        client.send("hello".encode("utf-8"))
        msg = client.recv(1024).decode("utf-8")
        print(msg)
        time.sleep(0.5)
    
    client.close()

    ------------恢复内容结束------------

  • 相关阅读:
    仿酷狗音乐播放器开发日志二十七 用ole为窗体增加文件拖动功能(附源码)
    redis持久化和主从同步
    MySQL主从复制
    Nginx 安装与详解
    ContOS安装配置MySQL,redis
    ContOS7编译安装python3,配置虚拟环境
    ContOS7切换国内源
    ContOS 常用命令
    轮询、长轮询、websock
    flask之三方组件
  • 原文地址:https://www.cnblogs.com/nmucomputer/p/12871276.html
Copyright © 2011-2022 走看看