powershell 接收一个端口tcp数据复制转发到多个目的

在 PowerShell 中,你可以使用 New-Object 来创建 System.Net.Sockets.TcpListener 和 System.Net.Sockets.TcpClient 对象,从而接收一个 TCP 端口的数据并将其转发到多个目的地。下面是一个 PowerShell 脚本示例,该脚本展示了如何从一个 TCP 端口接收数据并将其复制到多个目标地址:

 
# 定义源端口和目标地址
$sourcePort = 12345
$destinations = @(
@{ Ip = '目标IP地址1'; Port = '目标端口1' },
@{ Ip = '目标IP地址2'; Port = '目标端口2' },
@{ Ip = '目标IP地址3'; Port = '目标端口3' }
)# 创建 TcpListener 来监听源端口
$tcpListener = New-Object System.Net.Sockets.TcpListener((New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any, $sourcePort))
$tcpListener.Start()# 循环监听连接
while ($true) {
# 接受客户端连接
$tcpClient = $tcpListener.AcceptTcpClient()
$clientStream = $tcpClient.GetStream()# 为每个目标启动一个新的后台任务进行转发
foreach ($destination in $destinations) {
Start-Job -ScriptBlock {
# 创建 TcpClient 连接到目标地址
$remoteTcpClient = New-Object System.Net.Sockets.TcpClient($args[0].Ip, $args[0].Port)
$remoteStream = $remoteTcpClient.GetStream()# 读取源数据流并写入目标数据流
while ($true) {
if ($clientStream.DataAvailable) {
$buffer = New-Object Byte[] 1024
$bytesRead = $clientStream.Read($buffer, 0, $buffer.Length)
if ($bytesRead -eq 0) {
break
}
$remoteStream.Write($buffer, 0, $bytesRead)
$remoteStream.Flush()
} else {
Start-Sleep -Milliseconds 100
}
}# 关闭连接
$remoteStream.Close()
$remoteTcpClient.Close()
} -ArgumentList $destination
}# 关闭客户端连接
$clientStream.Close()
$tcpClient.Close()
}# 注意:上述脚本会无限循环,接受新的连接。在实际使用中,你可能需要添加适当的退出条件。

在这个脚本中,我们首先定义了一个源端口和多个目标地址。然后,我们创建一个 TcpListener 来监听源端口。当一个新的连接被接受时,我们为每个目标地址启动一个新的后台任务(使用 Start-Job)。每个后台任务都会创建一个新的 TcpClient 来连接到目标地址,并从一个流中读取数据然后写入到另一个流中。

请注意,这个脚本将无限循环并接受新的连接,因此在实际使用中,你可能需要添加适当的退出条件,例如监听特定的关闭命令或处理异常来优雅地关闭脚本。

此外,由于这个脚本使用了多个后台任务,因此它会在后台同时处理多个连接。请确保你的系统有足够的资源来处理这些并发连接。

在运行此脚本之前,请确保你有足够的权限来绑定到指定的端口,并且防火墙设置允许这些连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/673585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 日志管理

4.6)日志管理 MySQL 支持丰富的日志类型,如下: 事务日志:transaction log 事务日志的写入类型为 "追加",因此其操作为 "顺序IO"; 通常也被称为:预写式日志 write ahead…

《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

文章目录 1.1 MySQL 概览:版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例1.1.3 拓展案例 1.2 安装和配置 MySQL1.2.1 基础知识1.2.2 安装步骤1.2.3 重点案例1.2.4 拓展案例 1.3 基础命令和操作1.3.1 基础知识1.3.2 重点案例1.3.3 拓展案例 1.1 MySQL 概览&#…

【Web】vulhub Fastjson反序列化漏洞复现学习笔记

目录 1.2.24 RCE CVE-2017-18349 复现流程 原理分析 1.2.47 RCE CNVD-2019-22238 复现流程 原理分析 漏洞探测 1.2.24 RCE CVE-2017-18349 复现流程 vulhub启动靶场 用marshalsec启动LDAP/RMI服务 java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRef…

Redis篇之redis是单线程

一、redis是单线程 Redis是单线程的,但是为什么还那么快?主要原因有下面3点原因: 1. Redis是纯内存操作,执行速度非常快。 2. 采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题。 …

蓝桥杯基础知识7 vector

蓝桥杯基础知识7 vector vector 的定义和特性&#xff1a;在C中&#xff0c;vector是一个动态数组容器&#xff0c;可以存储一系列相同类型的元素。 vector 是一个模板类&#xff0c;使用之前包含头文件<vector>&#xff0c;声明一个vector对象vec&#xff0c;T是存储在v…

贪心算法的应用

考虑最大利润 输入&#xff1a;种类数、需求量、各种类的库存量、各种类的总价 输出&#xff1a;最大利润 #include <iostream> #include <algorithm>//调用sort排序 using namespace std; struct mooncake{double store;double price;double tprice; }cake[1000]…

联合体的深入了解

1.联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫&#xff1a;共用体。 给联合体其中一个成员赋值…

SpringBoot + Tess4J 实现本地与远程图片的文字识别

1 前言 1.1 概要 在本文中&#xff0c;我们将探讨如何在Spring Boot应用程序里集成Tess4J来实现OCR&#xff08;光学字符识别&#xff09;&#xff0c;以识别出本地和远程图片中的文字。 我们将从添加依赖说起&#xff0c;然后创建服务类以实现OCR&#xff0c;最后展示如何处…

Linux操作系统基础(一):操作系统概述

文章目录 操作系统概述 一、计算机分类 二、计算机组成 三、操作系统概述 四、操作系统分类 操作系统概述 一、计算机分类 计算机一般分为个人计算机&#xff08;笔记、台式机&#xff09;与 企业级服务器&#xff08;1U、2U、机柜、塔式、刀片&#xff09;两种形式。 二…

探索NLP中的N-grams:理解,应用与优化

简介 n-gram[1] 是文本文档中 n 个连续项目的集合&#xff0c;其中可能包括单词、数字、符号和标点符号。 N-gram 模型在许多与单词序列相关的文本分析应用中非常有用&#xff0c;例如情感分析、文本分类和文本生成。 N-gram 建模是用于将文本从非结构化格式转换为结构化格式的…

跨境电商新风潮:充分发挥海外云手机的威力

在互联网行业迅速发展的大环境下&#xff0c;跨境电商、海外社交媒体营销以及游戏产业等重要领域都越来越需要借助海外云手机的协助。 特别是在蓬勃发展的跨境电商领域&#xff0c;像亚马逊、速卖通、eBay等平台&#xff0c;结合社交电商营销和短视频内容成为最有效的流量来源。…

cmd卸载软件

如果使用的是Win 10&#xff0c;并且需要在磁盘内释放一些空间&#xff0c;可以直接在命令提示符里卸载不再使用的应用程序&#xff0c;和小编一起来看看详细的步骤吧。 步骤如下&#xff1a; 以管理员身份运行命令提示符来卸载程序。在Windows搜索框中&#xff0c;键入“ cm…

【Unity】重力场中的路径预测方法

前言 笔者前些天参加完了一场72小时的GameJam游戏开发比赛。这次比赛的主题是“探索”&#xff0c;笔者做了一个名为《探索者号》的探索宇宙的游戏&#xff08;游戏名一开始叫做《星际拾荒者》&#xff0c;但这不重要&#xff09;。 在开发过程中&#xff0c;笔者遇到了一些问…

Rust语言入门小结(第2篇)

主要是Rust语言圣经学习的小结&#xff0c;供参考 基本概念 // Rust 程序入口函数&#xff0c;跟其它语言一样&#xff0c;都是 main&#xff0c;该函数目前无返回值 fn main() {// 使用let来声明变量&#xff0c;进行绑定&#xff0c;a是不可变的// 此处没有指定a的类型&…

006集——where语句进行属性筛选——arcgis

在arcgis中&#xff0c; dBASE 文件除了 WHERE 语句以外&#xff0c;不支持 其它 SQL 命令。选择窗口如下&#xff1a; 首先&#xff0c;我们了解下什么是where语句。 WHERE语句是SQL语言中使用频率很高的一种语句。它的作用是从数据库表中选择一些特定的记录行来进行操作。WHE…

[VulnHub靶机渗透] dpwwn: 1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

Python 线性回归可视化 并将回归函数放置到图像上

import matplotlib.pyplot as plt import scipy import seaborn as sns# 加载内置的数据集 df sns.load_dataset(tips)#create regplot p sns.regplot(xtotal_bill, ytip, datadf)#calculate slope and intercept of regression equation slope, intercept, r, p, sterr sci…

SQL 使用大全

SQL简介 SQL&#xff0c;全称为Structured Query Language&#xff0c;即结构化查询语言&#xff0c;是一种用于管理关系数据库的标准语言。SQL语言包括数据定义语言&#xff08;DDL&#xff09;&#xff0c;数据操作语言&#xff08;DML&#xff09;&#xff0c;数据控制语言&…

Android:国际化弹出框

3.13 风格与主题、国际化 1、应用国际化 应用国际化&#xff0c;通过修改系统语言&#xff0c;应用显示语言跟着改变。 选择Locale,点击>>符号。 创建多个国家&#xff0c;地区strings.xml文件&#xff0c;有一个默认strings.xml文件&#xff0c;各个stirngs.xml中<…

C语言指针函数学习2

之前写过一篇指针函数的博文&#xff1b;复习再学习一下&#xff1b; 指针函数&#xff0c;是一个函数&#xff0c;它的返回值是指针类型&#xff1b; 之前写了一个指针函数&#xff0c;返回一个 int * 类型的指针&#xff1b;下面做一个程序&#xff0c;返回一个结构体指针&a…