最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#端口轉(zhuǎn)發(fā)用法詳解

 更新時(shí)間:2015年03月23日 09:50:40   作者:chongq  
這篇文章主要介紹了C#端口轉(zhuǎn)發(fā)用法,以實(shí)例形式較為詳細(xì)的分析了C#實(shí)現(xiàn)端口轉(zhuǎn)發(fā)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C#端口轉(zhuǎn)發(fā)用法。分享給大家供大家參考。具體分析如下:

這里以鏈接3389的時(shí)候?yàn)槔?/p>

例子1:連接a機(jī)器的3389端口連不上,因?yàn)閷?duì)方防火墻或者網(wǎng)關(guān)做了限制,只能訪問(wèn)a機(jī)器的個(gè)別端口比如80。

例子2:連接a機(jī)器的幾乎所有端口都連不上(對(duì)方乃內(nèi)網(wǎng)或者防火墻網(wǎng)關(guān)做了限制),只能1433上去,但是對(duì)方可以連接你的某些端口。

解決方法:

第一種較簡(jiǎn)單,只需要程序在對(duì)方開(kāi)80,你連接他80,程序收到數(shù)據(jù)后,發(fā)送到他本機(jī)的3389,同時(shí)從他3389收到數(shù)據(jù)后返回到你。程序就是一個(gè)中轉(zhuǎn)站。

using System;
using System.Net.Sockets;
using System.Threading;
namespace PortTransponder
{
  class Program
  {
    static void Main(string[] args)
    {
      TcpListener tl = new TcpListener(80);
//這里開(kāi)對(duì)方可以被你連接并且未被占用的端口
      tl.Start();
      while (true)
//這里必須用循環(huán),可以接收不止一個(gè)客戶
//因?yàn)槲野l(fā)現(xiàn)終端服務(wù)有時(shí)一個(gè)端口不行就換一個(gè)端口重連
      {
//下面的意思就是一旦程序收到你發(fā)送的數(shù)據(jù)包后立刻開(kāi)2個(gè)線程做中轉(zhuǎn)
        try
        {
          TcpClient tc1 = tl.AcceptTcpClient();
//這里是等待數(shù)據(jù)再執(zhí)行下邊,不會(huì)100%占用cpu
          TcpClient tc2 = new TcpClient("localhost", 3389);
          tc1.SendTimeout = 300000;
//設(shè)定超時(shí),否則端口將一直被占用,即使失去連接
          tc1.ReceiveTimeout = 300000;
          tc2.SendTimeout = 300000;
          tc2.ReceiveTimeout = 300000;
          object obj1 = (object)(new TcpClient[] { tc1, tc2 });
          object obj2 = (object)(new TcpClient[] { tc2, tc1 });
          ThreadPool.QueueUserWorkItem(new WaitCallback(transfer), obj1);
          ThreadPool.QueueUserWorkItem(new WaitCallback(transfer), obj2);
        }
        catch { }
      }
    }
    public static void transfer(object obj)
    {
      TcpClient tc1 = ((TcpClient[])obj)[0];
      TcpClient tc2 = ((TcpClient[])obj)[1];
      NetworkStream ns1 = tc1.GetStream();
      NetworkStream ns2 = tc2.GetStream();
      while (true)
      {
        try
        {
//這里必須try catch,否則連接一旦中斷程序就崩潰了
//要是彈出錯(cuò)誤提示讓機(jī)主看見(jiàn)那就囧了
          byte[] bt = new byte[10240];
          int count = ns1.Read(bt, 0, bt.Length);
          ns2.Write(bt, 0, count);
        }
        catch
        {
          ns1.Dispose();
          ns2.Dispose();
          tc1.Close();
          tc2.Close();
          break;
        }
      }
    }
  }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • c# 文件操作(移動(dòng),復(fù)制,重命名)

    c# 文件操作(移動(dòng),復(fù)制,重命名)

    這篇文章主要介紹了c# 如何對(duì)文件操作(移動(dòng),復(fù)制,重命名),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#窗體程序?qū)崿F(xiàn)全屏及取消全屏步驟

    C#窗體程序?qū)崿F(xiàn)全屏及取消全屏步驟

    這篇文章主要介紹了C#窗體程序?qū)崿F(xiàn)全屏及取消全屏步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 基于C#實(shí)現(xiàn)Windows后臺(tái)窗口操作與圖像處理技術(shù)分析

    基于C#實(shí)現(xiàn)Windows后臺(tái)窗口操作與圖像處理技術(shù)分析

    在Windows編程中,操作后臺(tái)窗口是一項(xiàng)復(fù)雜而有用的技術(shù),它可以用來(lái)自動(dòng)化用戶界面測(cè)試、應(yīng)用程序機(jī)器人等場(chǎng)景,本文將深入探討如何在C#中綁定后臺(tái)窗口、獲取后臺(tái)窗口界面圖片,以及在圖片中尋找指定圖標(biāo)并獲取坐標(biāo),需要的朋友可以參考下
    2024-12-12
  • C#實(shí)現(xiàn)WinForm控件焦點(diǎn)的獲取與失去

    C#實(shí)現(xiàn)WinForm控件焦點(diǎn)的獲取與失去

    在一個(gè)數(shù)據(jù)輸入表單中,當(dāng)用戶從一個(gè)文本框切換到另一個(gè)文本框時(shí),需要準(zhǔn)確地判斷焦點(diǎn)的轉(zhuǎn)移,以便進(jìn)行數(shù)據(jù)驗(yàn)證、提示信息顯示等操作,本文將探討 Winform 控件獲取與失去焦點(diǎn)的相關(guān)知識(shí),需要的朋友可以參考下
    2025-01-01
  • 一文詳解Unity3D?AudioSource組件使用示例

    一文詳解Unity3D?AudioSource組件使用示例

    這篇文章主要為大家介紹了一文詳解Unity3D?AudioSource組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • C#中實(shí)現(xiàn)Fluent Interface的三種方法

    C#中實(shí)現(xiàn)Fluent Interface的三種方法

    這篇文章主要介紹了C#中實(shí)現(xiàn)Fluent Interface的三種方法,本文講解了Fluent Interface的簡(jiǎn)單實(shí)現(xiàn)、使用裝飾器模式和擴(kuò)展方法實(shí)現(xiàn)Fluent Interface等3種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-03-03
  • C#使用FluentHttpClient實(shí)現(xiàn)請(qǐng)求WebApi

    C#使用FluentHttpClient實(shí)現(xiàn)請(qǐng)求WebApi

    FluentHttpClient 是一個(gè)REST API 異步調(diào)用 HTTP 客戶端,調(diào)用過(guò)程非常便捷,下面我們就來(lái)學(xué)習(xí)一下C#如何使用FluentHttpClient實(shí)現(xiàn)請(qǐng)求WebApi吧
    2023-12-12
  • C#通過(guò)域名獲得IP地址的方法

    C#通過(guò)域名獲得IP地址的方法

    這篇文章主要介紹了C#通過(guò)域名獲得IP地址的方法,涉及C#中GetHostByName方法的使用技巧,需要的朋友可以參考下
    2015-04-04
  • c#初學(xué)簡(jiǎn)單程序?qū)嵗a介紹

    c#初學(xué)簡(jiǎn)單程序?qū)嵗a介紹

    這篇文章介紹了c#初學(xué)簡(jiǎn)單程序?qū)嵗a,有需要的朋友可以參考一下
    2013-10-10
  • C# 使用modbus 讀取PLC 寄存器地址的方法

    C# 使用modbus 讀取PLC 寄存器地址的方法

    今天通過(guò)本文給大家介紹C# 使用modbus 讀取PLC 寄存器地址的方法,使用的組件Nmodbus,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10

最新評(píng)論

安仁县| 鄢陵县| 宜黄县| 花莲市| 四平市| 阜平县| 海晏县| 双流县| 南投县| 景洪市| 额尔古纳市| 平果县| 卢湾区| 绥江县| 北川| 兴海县| 旌德县| 德令哈市| 靖安县| 廉江市| 松桃| 武清区| 海盐县| 故城县| 烟台市| 汝州市| 清徐县| 古交市| 德阳市| 沾化县| 曲阜市| 蓬莱市| 高密市| 镇康县| 桐柏县| 乐清市| 泉州市| 阳高县| 闵行区| 广安市| 东乌珠穆沁旗|