socket為什麼無法繫結?

2021-12-30 00:45:16 字數 623 閱讀 3961

q:我繫結socket的時候總是失敗,只有開機第一次執行程式的時候可以繫結,然後以後就不行了,當我使用另外乙個程式連線此埠的時候卻連不上,但是我用埠掃瞄軟體卻可以掃到這個埠,請問大俠是什麼原因?如何解決?謝謝了先。

a:1.先確定該socket正常關閉  

2.如果乙個socket繫結了某個埠,該socket正常關閉或程式退出後,在一段時間內該埠依然保持被繫結的狀態,其他程式(或者重新啟動的原程式)無法繫結該埠。可以在獲得socket描述符之後通過呼叫setsockopt語句避免該問題:  

int   sockfd;  

int   opt   =   1;  

int   len   =   sizeof(opt);  

sockfd   =   socket(af_inet,   sock_stream,   0);  

setsockopt(sockfd,   sol_socket,   so_reuseaddr,   &opt,   &len);

q:原因查出來了,與socket的建立沒有關係,主要是由於沒有正確關閉的緣故,其實也算不上是沒有正常關閉,主要是由於使用了靜態變數,改回來就沒有問題了,我想大致原因是由於在服務中使用靜態變數。

摘自 cwj649956781

socket為什麼無法繫結?

q 我繫結socket的時候總是失敗,只有開機第一次執行程式的時候可以繫結,然後以後就不行了,當我使用另外乙個程式連線此埠的時候卻連不上,但是我用埠掃瞄軟體卻可以掃到這個埠,請問大俠是什麼原因?如何解決?謝謝了先。a 1.先確定該socket正常關閉 2.如果乙個socket繫結了某個埠,該sock...

什麼是Socket,為什麼要用Socket

應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp ip協議互動提供了稱為套接字 socket 的介面,區分不同應...

什麼是Socket,為什麼要用Socket

應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個 tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp ip協議互動提供了稱為套接字 socket 的介面,區分不同...