Go:服務(wù)怎么做到監(jiān)聽隨機端口
通常,服務(wù)一般會監(jiān)聽固定的端口。不過如果是本地測試服務(wù),也許有時候想隨機一個可用的端口。比如 Python 可以這么做:
$?python?-m?SimpleHTTPServer?0
Serving?HTTP?on?0.0.0.0?port?43481?...
Python 可以,Go 肯定也可以。那 Go 中如何實現(xiàn)呢?
直接上代碼:
package?main
import?(
????"log"
????"net"
????"net/http"
)
func?createListener()?(l?net.Listener,?close?func())?{
????l,?err?:=?net.Listen("tcp",?":0")
????if?err?!=?nil?{
????????panic(err)
????}
????return?l,?func()?{
????????_?=?l.Close()
????}
}
func?main()?{
????l,?close?:=?createListener()
????defer?close()
????http.Handle("/",?http.HandlerFunc(func(rw?http.ResponseWriter,?r?*http.Request)?{
????????//?添加你的代碼
????}))
????log.Println("listening?at",?l.Addr().(*net.TCPAddr).Port)
????http.Serve(l,?nil)
}
運行看:
$?go?run?main.go?
2022/01/04?17:40:16?listening?at?33845
參考:https://dev.to/clavinjune/listening-to-random-available-port-in-go-6bl
推薦閱讀
評論
圖片
表情
