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

一. 目的

  • 多个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)
            break

def 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

四. 演示

在这里插入图片描述

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaofang113

新人报到,请多关照

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值