切換網路看UDP繫結埠的本質

2021-10-11 19:20:38 字數 483 閱讀 8983

專案中因為切換網路導致udp監聽埠失敗,反覆多次,找不到實際原因,嘗試用繫結用qabstractsocket::reuseaddresshint  屬性,發現繫結失敗,將問題和了解的相關知識記錄如下:

檢視埠使用情況 : netstat -aon|findstr "埠" :  

1、socket 本質上是特殊的i/o,可以進行檔案的讀寫,有檔案描述符

2、埠的本質是程序號,負責將對應資料分發給相應的ip的具體程式來使用,監聽埠號就是監聽程序號

3:切換網路後本機ip會改變,回導致相應的程序發生變化?????

希望得到討論和解答

經過組內高手核查 發現在使用tcp和udp時,出現了

wsacleanup將所有socket清除導致udp失敗
在切換網路,雖然會核查路由表 但是依然監聽埠依然在,所以依舊可以收到訊息,只要不cleanup 該socket ,依舊可以工作,作為程序只要被占用,就可以讀取傳輸到該程序的通道

udp繫結埠資訊

會變的埠號 重新執行多次指令碼,然後在 網路除錯助手 中,看到的現象如下 說明 每重新執行一次網路程式,上圖中紅圈中的數字,不一樣的原因在於,這個數字標識這個網路程式,當重新執行時,如果沒有確定到底用哪個,系統缺省會隨機分配 記住一點 這個網路程式在執行的過程中,這個就唯一標識這個程式,所以如果其他...

Docker 網路之埠繫結

外部訪問容器 容器中可以執行一些網路應用,要讓外部也可以訪問這些應用,可以通過 p 或 p 引數來指定埠對映。p標記時 docker 會隨機對映乙個 49000 49900 的埠到內部容器開放的網路埠。p標記時 則可以指定要對映的埠,並且,在乙個指定埠上只可以繫結乙個容器。支援的格式有 ip hos...

Jav中使用UDP通訊時繫結埠

在socket以udp方式進行通訊時,客戶端的socket每次傳送資訊時的埠是隨機不固定的。這樣的話伺服器每次收到客戶端的資訊進行響應時,必須先從接受的資料報中獲取客戶端的位址和埠。於是就想能不能把客戶端的埠繫結乙個固定的值,首先想到的就是在jdk文件中查詢,結果當然是可以的。1.先來看看不繫結情況...