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 的介面,區分不同...