使它短:
服務器(192.168.0.78)偵聽8013
客戶端(10.0.2.15)試圖連接服務器,獲取它的本地端口(eg.54591)如何重用撥打的TCP端口
如何使客戶端關閉連接並重用54591?
我試過找來:
1.關閉連接直接和收聽同一端口:不能重用端口
2.啓動其他程序的(B)來連接服務器並退出,然後試圖監聽端口B已使用:未知端口
是否有正確的方法來做到這一點?
代碼很簡單:
客戶
func main() {
conn, err := net.Dial("tcp" , "192.168.0.78:8013")
if err != nil {
panic(err)
}
localAddr := conn.LocalAddr().String()
conn.Close()
// i got the local port, what to do?
fmt.Println(localAddr)
}
服務器
func main(){
ln, err := net.Listen("tcp", ":8013")
if err != nil {
panic(err)
}
for i := 0; i < 5; i++ {
conn, err := ln.Accept()
if err != nil {
panic(err)
}
fmt.Println(conn.RemoteAddr().String(), "connected")
conn.Close()
}
}
我已經測試你的代碼,但「直接關閉連接和監聽同一端口」是好的。沒有錯誤發生。 – Ggicci
爲什麼?你在乎什麼客戶端口是什麼? – EJP
我得到了這個:panic:listen tcp 10.0.2.15:54613:bind:address already already in use @Ggicci – user2986683