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

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

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

    tbwshc

    客戶端通過 HTTP 代理與 Telnet 服務(wù)器通信

    最近遇到一個業(yè)務(wù)需求:客戶端自動登錄遠(yuǎn)程Telnet服務(wù)器,然后自動發(fā)出一系列指令,返回指令執(zhí)行結(jié)果。

    這里,我采用 TcpClient 來與遠(yuǎn)程服務(wù)器Telnet服務(wù)通信(默認(rèn)端口:23)。這方面,網(wǎng)絡(luò)上有不少的代碼與文章。

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

     

    代理過程:

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

    (2)代理服務(wù)器請求連接Telnet服務(wù)器,Telnet服務(wù)器返回響應(yīng);

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

     

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

    現(xiàn)在,要用的是 CONNECT 請求方法,去連接 Telnet 服務(wù)器。如下:

    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服務(wù)IP與端口。

     

    接下來,就是利用HTTP代理,創(chuàng)建一個連接到Telnet服務(wù)器的 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); // 連接代理服務(wù)器.

                // CONNECT Telnet 服務(wù)器
                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 服務(wù)通信成功。

     

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

    Feedback

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

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品熟女国产| 日本19禁啪啪无遮挡免费动图| 成人精品视频99在线观看免费| 免费观看亚洲人成网站| 亚洲av无码无线在线观看| 亚洲性色AV日韩在线观看| 精品国产日韩久久亚洲| 久久国产亚洲精品| 国产综合成人亚洲区| 综合偷自拍亚洲乱中文字幕| 女bbbbxxxx另类亚洲| 国产亚洲漂亮白嫩美女在线| 免费视频精品一区二区| 国产日韩在线视频免费播放| 国产无遮挡裸体免费视频在线观看 | 日本亚洲免费无线码| 91在线视频免费看| 成人毛片18女人毛片免费视频未| 成人免费无遮挡无码黄漫视频| 美女黄网站人色视频免费国产| 日本黄页网站免费| 亚洲国产主播精品极品网红| 色噜噜AV亚洲色一区二区| 亚洲AV日韩AV永久无码久久 | 免费的一级黄色片| 免费a级毛片网站| 亚洲欧洲无码AV电影在线观看 | 在线不卡免费视频| 亚洲精品无码日韩国产不卡?V| 亚洲综合精品香蕉久久网| 色噜噜综合亚洲av中文无码| 国产日本亚洲一区二区三区| 风间由美在线亚洲一区| 两性色午夜视频免费网| 18女人毛片水真多免费| 国产精品成人四虎免费视频| 亚洲男人的天堂www| 亚洲国产成+人+综合| 日本一区二区在线免费观看 | 免费国产黄网站在线看| 久久精品国产这里是免费|