<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tbwshc

    客戶端通過 HTTP 代理與 Telnet 服務器通信

    最近遇到一個業務需求:客戶端自動登錄遠程Telnet服務器,然后自動發出一系列指令,返回指令執行結果。

    這里,我采用 TcpClient 來與遠程服務器Telnet服務通信(默認端口:23)。這方面,網絡上有不少的代碼與文章。

    完成之后,因需求變更,遇到了一個新的問題,就是客戶機器需要通過 HTTP 代理來連接公網的 Telnetb 服務器。在這種情況,TcpClien 連接需要經過 HTTP 代理來與服務器通信。這方面代碼幾番求助度娘、谷歌無果。沒辦法,自己分析 HTTP 代理。

     

    代理過程:

    (1)客戶機連接代理服務器;

    (2)代理服務器請求連接Telnet服務器,Telnet服務器返回響應;

    (3)代理服務器將Telnet返回響應傳給客戶端。

     

    HTTP/1.0協議支持的請求方法有:GET、POST、PUT、DELETE、CONNECT等。同樣HTTP代理服務器也這些請求方法。如:使用 GET/POST 方法代理訪問網頁等。

    現在,要用的是 CONNECT 請求方法,去連接 Telnet 服務器。如下:

    CONNECT xxx.xxx.xxx.xxx:23 HTTP/1.0

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)

    xxx.xxx.xxx.xxx:23,為Telnet服務IP與端口。

     

    接下來,就是利用HTTP代理,創建一個連接到Telnet服務器的 TcpCient 實例對象。

     

     


    public TcpClient CreateTcpClient(string proxyHost, int proxyPort, string telnetHost, int telnetPort)
            {
                IPHostEntry entry = Dns.GetHostEntry(proxyHost);
                IPEndPoint ipEndPoint = new IPEndPoint(entry.AddressList[0], proxyPort);

                TcpClient tcpClient = new TcpClient(AddressFamily.InterNetwork);
                tcpClient.Connect(ipEndPoint); // 連接代理服務器.

                // CONNECT Telnet 服務器
                string connectCommand = string.Format("CONNECT {0}:{1} HTTP/1.0\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)\n\n", telnetHost, telnetPort);
                byte[] buffer = Encoding.ASCII.GetBytes(connectCommand);
                tcpClient.GetStream().Write(buffer, 0, buffer.Length);

                buffer = new byte[512];
                int received = tcpClient.GetStream().Read(buffer, 0, 512);
                string receivedText = Encoding.ASCII.GetString(buffer, 0, received);
                // 成功.
                if (receivedText.IndexOf("200") > -1)
                    return tcpClient;
                return null;
            }
     

     這樣的 TcpClient 通過代理與 Telnet 服務通信成功。

     

    posted on 2012-07-06 15:42 chen11-1 閱讀(1284) 評論(1)  編輯  收藏

    Feedback

    # re: 客戶端通過 HTTP 代理與 Telnet 服務器通信 2012-07-07 09:41 Q345B方管

    這個通信方式還是可以好好研究下的  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产麻豆剧传媒精品国产免费| 免费看无码自慰一区二区| 花蝴蝶免费视频在线观看高清版| 久久九九久精品国产免费直播| 可以免费观看的国产视频| 歪歪漫画在线观看官网免费阅读 | 三级黄色在线免费观看| 100部毛片免费全部播放完整| 宅男666在线永久免费观看| 亚洲午夜成人精品无码色欲| 全部一级一级毛片免费看| 美女视频黄a视频全免费网站色窝 美女被cao网站免费看在线看 | 久久久久国产成人精品亚洲午夜 | 国产精品亚洲专区无码不卡| 国产午夜无码精品免费看| 亚洲乱码国产乱码精品精| 亚洲欧美熟妇综合久久久久| 国产拍拍拍无码视频免费| 亚洲欧洲日产国码久在线观看| 亚洲AV成人精品日韩一区| 久久国产精品成人片免费| 亚洲乱亚洲乱少妇无码| 亚洲国产成人91精品| 中国一级特黄的片子免费| 亚洲AV日韩AV天堂一区二区三区| 国产亚洲精品欧洲在线观看| 亚洲综合色成在线播放| 国产99久久亚洲综合精品| 最新精品亚洲成a人在线观看| 国产成人精品日本亚洲语音| 久久久久久99av无码免费网站| 亚洲精品综合一二三区在线| 无码人妻精品中文字幕免费东京热| 妞干网手机免费视频| 亚洲系列国产精品制服丝袜第| 中文字幕永久免费| 亚洲欧洲日产专区| h视频在线免费看| 亚洲国产韩国一区二区| 国产在线观看www鲁啊鲁免费| 亚洲综合欧美色五月俺也去|