標籤:開始 代理 監聽連接埠 設定 一個 技術分享 tps ice send
一、產品原型
1、配置使用Proxy 伺服器
參照設定,HTTPS和FTP等不要設定(本Proxy 伺服器未對這兩種協議進行處理), IP是 127.0.0.1 表示Proxy 伺服器是在本機,監聽連接埠設成8888。
在IE裡設定完後,我們會發現其它瀏覽器也自動開始使用Proxy 伺服器了,這是因為設定Proxy 伺服器是系統的功能,每個瀏覽器開啟的都是同一個設定Proxy 伺服器的程式。
其實,我們可以實現一個自動化佈建Proxy 伺服器的功能,這樣,當我們的Proxy 伺服器啟動的時候,就自動將原生Proxy 伺服器設定成自己,退出的時候,再恢複成原樣,這樣就不再需要向上面一樣手動設定了。
2、使用Proxy 伺服器
配置完畢後,在瀏覽器裡輸入網址: http://www.baidu.com
我們可以清楚看到,所有的請求和響應資訊都已經被監聽到了。
二、關鍵點設計1、商務程序
參考Fiddler 的設計思想,在程式啟動時,new 一個代理(Proxy)類的執行個體,然後調用這個執行個體的Start方法,來啟動代理服務,
在Start方法裡就是不停的非同步監聽原生8888連接埠(還記得剛才設定Proxy 伺服器時設定的連接埠嗎),
如果監聽到了,就從線程池裡,取出來一個線程,並在這個線程裡,構造一個Session對象。一個Session對象,代表用戶端與伺服器的一次會話,在有Proxy 伺服器情況下的一次會話(Session)代表的是:
1.從用戶端讀請求
2.重新封裝用戶端的請求,轉寄至目標伺服器.
3.從目標伺服器讀取響應資訊
4.封裝接收到的響應資訊並返回給用戶端。
故而在Session類裡,封裝一個ClientChatter類型的名為Request的對象,用來實現和用戶端的通訊,
另外又封裝了一個ServiceChatter類型的名為Response的對象,用來實現和目標伺服器的通訊。
2、ObtainRequest
3、response.ResendRequest
4、response.ReadRequest
5、returnResponse
開發一個httpProxy 伺服器