我複雜的網路環境中,proxy是個很有用的工具,我們可以通過proxy**幫我們完成網路流量的**。
這個proxy得先能接收請求,所以這裡先啟動乙個tcp的監聽,獲取請求
func (s *server) start()
glog.infof("proxy listen in %s, waiting for connection...\n", s.addr)
for
go newconn(s,conn).serve()}}
當獲取的請求連線conn,交個serve方法去處理。
}gettunnelinfo是獲取連線資訊的,譬如訪問host、port、協議和請求頭之類的東西。
然後就可以建立遠端連線,通過net.dial(「tcp」, remote)建立。
最後就是簡單複製流量c.tunnel(remoteconn),具體**如下
_, err := io.copy(c.netconn, remoteconn)
這樣就可以通過它**流量
下面是例子
啟動服務
.
/goproxy--
addr
:9999--
log_dir=/tmp/goproxy--
v=10
到另外的機器上面執行
完整**如下
用proxy寫乙個遞迴來監聽巢狀物件甚至JSON
之前的這篇文章 其實那個監聽方式有個大bug,當不停的update 監聽物件以後就會導致記憶體洩漏。因為每次在呼叫get的時候都會生成乙個新的proxy,後來才知道是多傻。經過我一天時間的思考,用了乙個遞迴的方法去解決巢狀物件的監聽問題。下面是 傳遞兩個引數,乙個是object,乙個是proxy的h...
golang寫的乙個分頁控制項。
直接放 吧,基本不用改,直接用了。package components import math date 2019 04 01 description 分頁控制項 pages 分頁控制項 type pages struct startrecord 設定分頁查詢時起始位置 func p pages s...
用python寫乙個restful API
coding utf 8 package.module python實現的圖書的乙個restful api.restful api 一般模式 get select 從伺服器取出資源 一項或多項 post create 在伺服器新建乙個資源。put update 在伺服器更新資源 客戶端提供改變後的完...