1
我寫了一個客戶端應用程序,它使用mdnsreponder進行某些服務發現。我有一個要求,我的客戶端IP會經常變化。每當IP發生變化時,我都需要再次進行發現。 所以我寫了一個簡單的測試應用程序,它將每1分鐘更改IP並進行發現。套接字sendto在udp數據包期間得到錯誤22
一切工作正常,但經過少量的IP更改(一些7-10次更改),它給出了以下插座錯誤。
(以下爲SENDTO socket函數在mdnsresponder代碼中的錯誤代碼)
mdnsplatformsend udp got error 22 .
,我的要求會不會把它與新的IP接口上之後。
我不得不再次重新啓動我的應用程序,那麼只有它的工作原理...
有人可以幫助找出問題,爲什麼它停止了幾個試驗後?
errno == 22是EINVAL(無效參數)。您正在將一個不正確的參數傳遞給sendto函數。你不會顯示你的套接字是綁定到INADDR_ANY(0)還是一個特定的適配器 - 因爲這可能是危險的。請告訴我們你的代碼。 – selbie
由於您沒有向我們展示如何調用sendto()來包含傳遞參數的定義和初始化,我們只能猜測。我的第一個猜測是你傳遞了一個無效的套接字描述符。 – alk