tcp转发服务桥(windows)

news2024/9/25 7:24:25

目的

目的是为了在网关上转发udp数据和tcp数据。对于网络里面隔离的内网来说,有一台可以上网的服务器,那么通过两块网卡就可以转发出去,在服务器上进行数据的转发,有tcp和udp两种,udp已经写过了,这次使用了c# 来制作一个windows程序来转发tcp 数据。实际上,使用的是windows的netsh命令。
程序简单,好用,非常稳定。

udp 转发桥

udp转发服务桥

tcp转发桥

在桥上制定规则,注意,这里是使用的windows自带的服务做的,投机取巧,比较简单。界面如下:
可以自由增加规则和删除规则
在这里插入图片描述

基本数据结构

对于网络,方向是有进和出两个方向,所以定义了Direction

    public class ProxyRule
    {
        public string Direction { get; set; }
        public string Listenaddress { get; set; }
        public string Listenport { get; set; }
        public string Connectaddress { get; set; }
        public string Connectport { get; set; }
        public string Protocol { get; set; }

        public override bool Equals(Object obj)
        {
            ProxyRule that = obj as ProxyRule;
            if (that == null)
                return false;
            return Direction == that.Direction && Listenaddress == that.Listenaddress && Listenport == that.Listenport;
        }
        public override int GetHashCode()
        {
            return (Direction+Listenaddress+Listenport).GetHashCode();
        }
        public override string ToString()
        {
            return Direction + " listenaddress=" + Listenaddress + " listenport=" + Listenport + " connectaddress=" + Connectaddress + " connectport=" + Connectport + " protocol=" + Protocol;
        }
        public string ToShortString()
        {
            return Direction + " listenaddress=" + Listenaddress + " listenport=" + Listenport;
        }
        public string[] ToSubitems()
        {
            return new string[] { Direction, Listenaddress, Listenport,Connectaddress, Connectport, Protocol };
        }
        public static ProxyRule FromSubitems(string[] items)
        {
            ProxyRule rule = new ProxyRule();
            rule.Direction = items[0];
            rule.Listenaddress = items[1];
            rule.Listenport = items[2];
            rule.Connectaddress = items[3];
            rule.Connectport = items[4];
            rule.Protocol = items[5];
            return rule;
        }
    }

返回结果

    class ExecResult
    {
        public ExecResult()
        {
        }
        public ExecResult(int code,string output,string error):this()
        {
            this.code = code;
            this.output = output;
            this.error = error;
        }
        public int code { get; set; }
        public string output { get; set; }
        public string error { get; set; }
    }

原理

实际上,这里就是使用了windows 的netsh命令来进行网络数据的转发,
netsh interface portproxy add 是用来增加规则
netsh interface portproxy delete 是用来删除规则
netsh interface portproxy set 设定
netsh interface portproxy reset 重置

获取所有

这里举一个获取所有规则得例子

public List<ProxyRule> GetRules()
{
     List<ProxyRule> rules = new List<ProxyRule>();
     foreach (string direction in directions)
     {
                ExecResult result = ExecCommand("netsh", "interface portproxy show " + direction);
                Match m = regex.Match(result.output);
                while (m.Success)
                {
                    ProxyRule rule = new ProxyRule();
                    rule.Direction = direction;
                    rule.Listenaddress = m.Groups[1].Captures[0].Value;
                    rule.Listenport = m.Groups[2].Captures[0].Value;
                    rule.Connectaddress = m.Groups[3].Captures[0].Value;
                    rule.Connectport = m.Groups[4].Captures[0].Value;
                    rule.Protocol = "tcp";
                    rules.Add(rule);
                    Console.WriteLine(rule.ToString());
                    m = m.NextMatch();
                }
      }
      return rules;
}

下载

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

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

相关文章

MySQL 导出库和表信息导出成Excel

最近在写文档需要将数据库的表和对应的表信息做成EXCEL。 我不能一个一个表一个一个字段的敲下去吧&#xff01;&#xff01;&#xff01; 那有没有一个SQL搞定呢&#xff1f; 这个可以有有&#xff01; 数据库里有那些表&#xff08;包含表名和表介绍&#xff09; SELECT…

路径规划算法:基于野马优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于野马优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于野马优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法野马…

关于CEPH的简单畅谈

CEPH是什么 CEPH是一个先进的分布式存储系统&#xff0c;它具有高度可靠性、可扩展性和性能。CEPH旨在解决传统存储系统中存在的诸多挑战&#xff0c;如单点故障、难以扩展、数据丢失风险等。 CEPH的设计理念是将数据分布到一个由多个节点组成的集群中&#xff0c;并利用冗余…

ERROR: ORA-12560: TNS: 协议适配器错误

之前在Windows安装了Oracle&#xff0c;遇到了ORA-12560 TNS: protocol adapter error的错误。这个问题的原因很简单&#xff0c;就是没有配Oracle的环境变量。由于是去年遇到的问题&#xff0c;我现在已经忘了具体配置什么变量&#xff0c;但可以肯定的是这个问题就是环境变量…

24 | MySQL是怎么保证主备一致的?

以下内容出自《MySQL 实战 45 讲》 https://time.geekbang.org/column/article/76446 24 | MySQL是怎么保证主备一致的&#xff1f; MySQL 主备的基本原理 如图所示就是基本的主备切换流程。&#xff08;M-S结构&#xff09; 节点 A 到 B 这条线的内部流程是什么样的 &#x…

DEVICENET转ETHERNET/IP网关devicenet怎么读

远创智控YC-EIP-DNT&#xff0c;你听说过吗&#xff1f;这是一款自主研发的ETHERNET/IP从站功能的通讯网关&#xff0c;它能够连接DEVICENET总线和ETHERNET/IP网络&#xff0c;从而解决生产管理系统中协议不同造成的数据交换互通问题。 这款产品在工业自动化领域可谓是一大利…

微调预训练的 NLP 模型

动动发财的小手&#xff0c;点个赞吧&#xff01; 针对任何领域微调预训练 NLP 模型的分步指南 简介 在当今世界&#xff0c;预训练 NLP 模型的可用性极大地简化了使用深度学习技术对文本数据的解释。然而&#xff0c;虽然这些模型在一般任务中表现出色&#xff0c;但它们往往缺…

vue进阶----路由

目录 前端路由的概念与原理 什么是路由 SPA 与前端路由 前端路由 前端路由的工作方式 实现简易的前端路由 vue-router 的基本用法 vue-router vue-router 安装和配置的步骤 声明路由的匹配规则 vue-router 的常见用法 1、路由重定向 2、嵌套路由 3、动态路由匹配 …

Stable Diffusion高阶技能(1)-掌握这些,你也能绘出惊艳画作

开篇 初踏入AI作画的世界,你可能会对如何制造出惊艳的艺术作品而困惑。作为一个前沿技术的探索者,我在这一篇文章中,会和你一同揭秘如何用正确的提示词操控AI的“透视”,将最美的画面展现在你眼前。 技能一、提高图片质量的高阶手法 在数量众多的元素中,我们如何做出最…

Vue组件库Element-常见组件-Form表单

Form表单 Form 表单&#xff1a;由输入框、选择器、单选框、多选框等控件组成&#xff0c;用以收集、检验、提交数据 具体关键代码如下&#xff1a; <template><div><el-row><!-- button 按钮 --><el-button>默认按钮</el-button><e…

DDPM 知识点

Generative Modeling by Estimating Gradients of the Data Distribution | Yang Song Score Matching 系列 (一) Non-normalized 模型估計 | 棒棒生

基于单片机智能饮水机加热系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前水温&#xff0c;定时提醒&#xff0c;水量变化DS18B20检测当前水体温度&#xff1b;水位传感器检测当前水位&#xff1b;继电器驱动加热片进行水温加热&#xff1b;定时提醒喝水&#xff0c;蜂鸣器报警&#x…

一键报警终端怎么样

一键报警终端是一种便携式设备&#xff0c;用于紧急情况下的一键求救。通过一键报警终端&#xff0c;用户可以发送紧急求助信号给预设的联系人或报警中心&#xff0c;以便及时获得救援。一键报警终端的主要功能和特点如下&#xff1a;1. 便携式设计&#xff1a;一键报警终端通常…

【Android studio】学号及姓名的输入保存页面

一、设计需求 设计一个页面有两个编辑框&#xff0c;分别输入学号和姓名。有两个按钮&#xff0c;一个是修改按钮&#xff0c;当按下修改按钮&#xff0c;编辑框可以进行编辑&#xff1b;一个是保存按钮&#xff0c;当按下保存按钮&#xff0c;使编辑框显示当前的内容并且编辑…

在线性能分析工具Arthas基于Springboot安装配置使用和Arthas Tunnel安装配置使用

概要 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类加…

Python Web开发入门教程(非常详细)

Python是一种非常流行的编程语言&#xff0c;被广泛应用于数据科学、Web开发、人工智能、机器学习等领域。Python语言易学易用&#xff0c;是许多初学者进入编程世界的入门选择。然而&#xff0c;学习Python并不是一件简单的事情&#xff0c;尤其是对于初学者而言。在本文中&am…

深度学习——优化器Optimizer

代码以及详细注释&#xff1a; import torch import torch.utils.data as Data import torch.nn.functional as F import matplotlib.pyplot as plt# torch.manual_seed(1) # reproducible """超参数 """ # 学习率 LR 0.01 # 批大小 BATCH_…

API测试之Postman使用完全指南

前言 Postman是一个可扩展的API开发和测试协同平台工具&#xff0c;可以快速集成到CI/CD管道中。旨在简化测试和开发中的API工作流。 Postman 工具有 Chrome 扩展和独立客户端&#xff0c;推荐安装独立客户端。 Postman 有个 workspace 的概念&#xff0c;workspace 分 pers…

16、Python读取气象数据的正确姿势

文章目录 一、气象数据格式&#xff08;常用&#xff09;二、单个文件读取1. 常规格式2. CSV格式3. NetCDF格式4. GRIB格式 一、气象数据格式&#xff08;常用&#xff09; 常规格式&#xff08;Plain Text&#xff09;&#xff1a;气象数据可以使用纯文本格式进行存储&#xf…

漏洞复现 || 某友文件上传

免责声明 技术文章仅供参考&#xff0c;任何个人和组织使用网络应当遵守宪法法律&#xff0c;遵守公共秩序&#xff0c;尊重社会公德&#xff0c;不得利用网络从事危害国家安全、荣誉和利益&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此…