Python多TCP客户端数据透传服务端

本文介绍了一种使用Python实现的多TCP客户端群发功能,通过multiprocessing模块创建进程来实现实时群发数据,适用于需要高效并发的数据推送场景。
部署运行你感兴趣的模型镜像

一. 目的

  • 多个TCP客户端同时接入
  • 任一客户端数据的群发功能

二. 示例程序

import socket as sk
import multiprocessing as mp
import os
port = 2333 #TCP服务端端口def Mass(sock_in, addr,sock_list):  #定义群发函数for sock_c in sock_list.items():
        True
    while True:
        try:
            readdata = sock_in.recv(1024)
            if readdata:           
                print(readdata.decode('utf-8')) #将需要群发的数据打印出来
                client = sock_list.copy()
                del client[addr]
                for sock_c in client.items():   
                    try:
                        sock_c[1].send(readdata)except:
                        del sock_list[sock_c[0]]
            else:
                for sock_c in sock_list.items():
                    if sock_c[0]!=addr:
                        True
                del sock_list[addr]
                os._exit(0)
                break
        except:for sock_c in sock_list.items():
                if sock_c[0]!=addr:
                    True
            del sock_list[addr]
            os._exit(0)
            breakdef main():
    s = sk.socket(sk.AF_INET ,sk.SOCK_STREAM)
    s.setsockopt(sk.SOL_SOCKET, sk.SO_KEEPALIVE, 1)
    s.setsockopt(sk.SOL_TCP, sk.TCP_KEEPIDLE, 1)
    s.setsockopt(sk.SOL_TCP, sk.TCP_KEEPINTVL, 1)
    s.setsockopt(sk.SOL_TCP, sk.TCP_KEEPCNT, 1)
    s.bind(('',port))
    s.listen()
    sock_list=mp.Manager().dict()
    while True:
        sock_in,addr = s.accept()
        sock_list[addr]=sock_in
        t1 = mp.Process(target=Mass, args=(sock_in, addr,sock_list))
        t1.start()if __name__ == '__main__':
    main()

三. 注意事项

1.修改服务端口

port = 2333

    2.需要用到的库

    import socket as sk
    import multiprocessing as mp
    import os
    

      四. 演示

      在这里插入图片描述

      您可能感兴趣的与本文相关的镜像

      Python3.10

      Python3.10

      Conda
      Python

      Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

      ### 4G DTU TCP/UDP 数据透传配置与使用方法 #### 配置概述 4G DTU 是一种用于实现数据输的设备,能够将串口数据转换为 IP 数据或将 IP 数据转换为串口数据。其核心功能之一是支持 TCP 和 UDP 的数据透传[^1]。以下是关于如何配置和使用 4G DTU 实现 TCP 或 UDP 数据透传的具体说明。 --- #### 硬件准备 在开始配置之前,请确保以下条件已满足: 1. 已购买并接收到一台兼容的 4G DTU 设备(如众山科技 LTE660、TD210 或其他品牌型号)。 2. 准备好需要连接的感器或其他串口设备。 3. 确认目标服务器地址以及端口号(如果是 TCP,则需指定服务端监听的 IP 地址和端口;如果是 UDP,则仅需知道目的地址和端口)。 --- #### 软件工具 通常情况下,厂商会提供配套的配置软件来简化设置过程。例如: - **众山科技** 提供了专用的配置工具,可以通过 USB 接口或 Web 页面完成基本参数设定。 - 如果未配备专门软件,也可以通过 AT 指令手动调整配置。 --- #### 配置步骤详解 ##### 1. 进入配置界面 启动随附的配置程序,或者登录到 DTU 自带的 Web 控制台。输入默认用户名密码(一般为 admin/admin),进入主菜单。 ##### 2. 设置工作模式 选择适合的应用场景: - 对于 **TCP 客户端模式**:DTU 主动向远端服务器发起连接请求。 - 对于 **TCP 服务器模式**:DTU 绑定特定端口等待客户端接入。 - 对于 **UDP 模式**:无需建立长期连接,直接发送数据包至指定目的地。 ##### 3. 输入目标信息 根据实际需求填写必要的字段: - **Server Address**: 目标主机公网 IPv4 地址或域名。 - **Port Number**: 所使用的端口号,默认范围为 1~65535。 - 若采用 UDP 方式还需额外指明源端口(Source Port),以便回显响应消息时识别身份。 ##### 4. 启用心跳保持机制 (可选) 为了防止长时间无活动断开链接,建议开启定期探测功能。具体选项可能包括但不限于: - 发送固定字符串作为维持链路存活信号; - 时间间隔单位秒(s)。 ##### 5. 测试连通性 保存更改之后尝试模拟真实环境下的交互流程验证效果。如果一切正常应该可以看到状态栏显示“Connected”。 ##### 6. 应用实例化部署 最后一步便是正式投入使用前再次确认所有细节均符合预期,并妥善安置硬件设施以免受到外界干扰影响性能表现。 --- #### 示例代码片段 下面给出一段 Python 脚本来演示如何借助第三方库 `socket` 来创建简单的 TCP Server: ```python import socket def start_tcp_server(host='0.0.0.0', port=9999): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((host, port)) s.listen() conn, addr = s.accept() # Wait for a connection with conn: print(f'Connected by {addr}') while True: data = conn.recv(1024).decode('utf-8') if not data: break print(f'Received message: {data}') if __name__ == '__main__': start_tcp_server() ``` 此脚本适用于测试阶段充当虚拟接收方角色配合调试整个系统架构运作状况良好与否。 --- #### 注意事项 尽管大部分现代款型都具备良好的稳定性保障措施比如内置看门狗电路设计以防死机现象发生但仍推荐定时重启维护延长使用寿命减少潜在风险隐患[^2]。 另外值得注意的是当涉及到敏感信息安全方面最好启用 SSL 加密通道或者其他更高级别的防护手段进一步提升整体安全性水平避免遭受恶意攻击威胁损害利益造成损失不可挽回的局面出现。 ---
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值