程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> socket為什麼無法綁定?

socket為什麼無法綁定?

編輯:C++入門知識

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved