iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现同步模式下的端口映射程序
  • 277
分享到

C#实现同步模式下的端口映射程序

2024-04-02 19:04:59 277人浏览 独家记忆
摘要

今天打算写一个FtpServer玩一下的,需要看看ftp软件常用命令形式(完整实现所有ftp命令太麻烦),最开始打算通过抓包看cuteftp是如何访问ftpserver的,但要把其中

今天打算写一个FtpServer玩一下的,需要看看ftp软件常用命令形式(完整实现所有ftp命令太麻烦),最开始打算通过抓包看cuteftp是如何访问ftpserver的,但要把其中的命令保存下来还得一条条复制,太麻烦,便通过proxy模式写了一个代理程序,来获取其交互的命令,写了一个简单的同步模式下的端口映射程序后,发现比常用的异步proxy要简单的多,便把这段代码贴出来,以备日后查询:

class Program
{
    static void Main(string[] args)
    {
        tcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 8000));
        listener.Start();
        while (true)
        {
            var client = listener.AcceptTcpClient();

            Console.WriteLine("connected");
            var proxy = new TcpClient();
            Console.WriteLine("remote connected");
            proxy.Connect(new IPEndPoint(IPAddress.Loopback, 21));

            new SyncProxy("client->remote",proxy.GetStream(), client.GetStream());
            new SyncProxy("remote->client",client.GetStream(), proxy.GetStream());
        }
    }
}

class SyncProxy
{
    NetworkStream read;
    NetworkStream write;
    string name;

    public SyncProxy(string name, NetworkStream read,NetworkStream write)
    {
        this.name = name;
        this.read = read;
        this.write = write;

        System.Threading.ThreadPool.QueueUserWorkItem(PipeStream);
    }

    void PipeStream(object state)
    {
        byte[] buffer = new byte[1500];
        int count = 0;
        while (true)
        {
            try
            {
                count = read.Read(buffer, 0, buffer.Length);
            }
            catch (Exception)
            {
                count = 0;
            }

            if (count == 0)
            {
                Console.WriteLine(name+" closed");
                write.Close();
                break;
            }

            Console.Write(name + ": "+ Encoding.Default.GetString(buffer, 0, count));
            write.Write(buffer, 0, count);
        }
    }
}

通过它获取到的cuteFtp交互命令如下:

connected
remote connected
client->remote: 220 Serv-U FTP Server v6.0 for WinSock ready...
remote->client: USER 1
client->remote: 331 User name okay, need passWord.
remote->client: PASS 1
client->remote: 230 User logged in, proceed.
remote->client: PWD
client->remote: 257 "/" is current directory.
remote->client: FEAT
client->remote: 211-Extension supported
client->remote: CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
211 End
remote->client: REST 0
client->remote: 350 Restarting at 0. Send STORE or RETRIEVE.
remote->client: PASV
client->remote: 227 Entering Passive Mode (127,0,0,1,29,18)
remote->client: LIST
client->remote: 150 Opening ASCII mode data connection for /bin/ls.
client->remote: 226 Transfer complete.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#实现同步模式下的端口映射程序

本文链接: https://www.lsjlt.com/news/151737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#实现同步模式下的端口映射程序
    今天打算写一个FtpServer玩一下的,需要看看ftp软件常用命令形式(完整实现所有ftp命令太麻烦),最开始打算通过抓包看cuteftp是如何访问ftpserver的,但要把其中...
    99+
    2024-04-02
  • C#如何实现同步模式下的端口映射程序
    这篇文章主要介绍了C#如何实现同步模式下的端口映射程序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#如何实现同步模式下的端口映射程序文章都会有所收获,下面我们一起来看看吧。代码如下:class P...
    99+
    2023-07-02
  • MacOS下如何实现docker端口映射
    这篇文章给大家分享的是有关MacOS下如何实现docker端口映射的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MacOS上的Docker网络结构图从里到外的顺序是:容器->boot2docker(虚拟机)...
    99+
    2023-06-19
  • 使用nginx实现端口映射的教程
    这篇文章主要讲解了“使用nginx实现端口映射的教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nginx实现端口映射的教程”吧!考虑这样一个场景,我们部署了若干web应用在一台云服务...
    99+
    2023-06-04
  • Docker容器修改端口映射的实现
    目录可解决问题如下解决方案可解决问题如下 (1) 在不删除现有容器的情况下, 修改原有容器的端口映射; (2) 创建容器的时候指定了一个端口映射, 但是创建之后的容器存在多个端口映射...
    99+
    2024-04-02
  • 在Linux系统下如何使用SSH实现端口映射
    这篇文章主要介绍“在Linux系统下如何使用SSH实现端口映射”,在日常操作中,相信很多人在在Linux系统下如何使用SSH实现端口映射问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Linux系统下如何使用...
    99+
    2023-06-13
  • 云服务器端口映射:实现内网端口的访问
    什么是端口映射? 在云服务器中,端口映射是一种将外部网络请求转发到内部网络的技术。通过端口映射,可以将云服务器的公网IP地址和端口与内网服务器的IP地址和端口进行绑定,从而实现对内网服务的访问。 为什么需要端口映射? 在云服务器中,内网I...
    99+
    2023-10-28
    端口 内网 端口映射
  • docker容器的四种端口映射怎么实现
    本文小编为大家详细介绍“docker容器的四种端口映射怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker容器的四种端口映射怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。端口映射把容器的端...
    99+
    2023-06-30
  • nginx反向代理实现不同域名映射到同一台服务器的相同端口
    在实际应用中,我们经常会遇到多个域名需要映射到同一台服务器的相同端口的情况,这时可以使用nginx反向代理来实现。 以实现将www.example.com和www.test.com都映射到127.0.0.1的80端口为例,具体步骤如下: 修...
    99+
    2023-08-19
    服务器 nginx 运维
  • 云服务器怎么做端口映射功能的实现
    端口映射可以为云服务器的多个客户端提供访问同一个云服务器资源的途径。例如,一个云服务器可以将某个客户端的PHP端口映射到另一个PHP端口,从而使一个PHP客户端可以通过该PHP客户端访问同一个云服务器的其他应用程序。另外,一个云服务器可以将...
    99+
    2023-10-27
    怎么做 端口映射 功能
  • C++实现线程同步的四种方式总结
    目录内核态互斥变量 事件对象资源信号量用户态关键代码内核态 互斥变量  互斥对象包含一个使用数量,一个线程ID和一个计数器。其中线程ID用于标识系统中的哪个线程当...
    99+
    2022-11-16
    C++线程同步方式 C++线程同步
  • C#实现基于任务的异步编程模式
    目录一.延续任务二.同步上下文三.使用多个异步方法1.按顺序调用异步方法2.使用组合器四.转换异步模式五.错误处理1.异步方法的异常处理2.多个异步方法的异常处理3.使用Aggreg...
    99+
    2024-04-02
  • C#串口接收程序的实现
    1.代码 using System; using System.Collections.Generic; using System.ComponentModel; using Sys...
    99+
    2024-04-02
  • linux实现线程同步的方式有哪些
    本篇内容主要讲解“linux实现线程同步的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux实现线程同步的方式有哪些”吧!6种方式:1、互斥锁,本质就是一个特殊的全局变量,拥有l...
    99+
    2023-07-02
  • Java调用C++程序的实现方式
    目录Java调用C++程序1、编写Java程序:HelloWorld2、Windows环境下,在cmd中编译以上程序3、编写C++程序4、完成以上步骤后5、重新编译HelloWorl...
    99+
    2024-04-02
  • Java实现线程同步的四种方式总结
    目录什么是线程同步线程同步的几种方式1.使用synchronized关键字2.使用ReentrantLock3.使用原子变量实现线程同步4.ThreadLocal实现线程同步什么是线...
    99+
    2024-04-02
  • Java多线程同步实现的方式是什么
    这篇文章主要讲解了“Java多线程同步实现的方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java多线程同步实现的方式是什么”吧!给我一把锁,我能创造一个规矩很多人都知道,在Jav...
    99+
    2023-06-17
  • VS Code如何编写C/C++程序的实现步骤
    目录1、下载VsCode工具2、安装扩展程序插件3、编译软件3.1、MinGW安装完成后,需要配置环境变量3.2、配置环境变量1、下载VsCode工具 下载地址https://cod...
    99+
    2024-04-02
  • JavaScript中实现异步编程模式的方法
    小编给大家分享一下JavaScript中实现异步编程模式的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript中实现异步编程模式的方法:1、回调函数,这是异步编程最基本的方法;2、事件监听;3、发布或订阅...
    99+
    2023-06-14
  • C#实现网络小程序的步骤详解
    目录1、简单上手2、使用并行计算3、添加异步编程4、补充经常要检测某些IP地址范围段的计算机是否在线。 有很多的方法,比如进入到网关的交换机上去查询、使用现成的工具或者编写一个简单的...
    99+
    2022-12-27
    C#网络小程序 C#网络 C# 小程序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作