如何設定socket為非阻塞io
int listenfd = socket(pf_inet, sock_stream, 0);
int fdflag = fnctl(listenfd, f_getfl);
if( fcntl(listenfd, f_setfl, fdflag | o_nonblock) == -1)
2. 如何避免bind error
2.1 bind的位址需要是本地擁有的位址如0.0.0.0 (不限制ip),127.0.0.1 (lo,環迴網絡卡),192.168.x.x(區域網位址);如果bind不存在的位址會導致bind error。
2.2 處於time wait狀態的伺服器重新bind時會導致bind error,此時可以為socket設定reuseaddr選項進行避免。
const
int reuseaddr_flag = 1;
if ( setsockopt(listenfd, sol_socket, so_reuseaddr, &reuseaddr_flag, sizeof(int)) == -1 )
程式設計常見問題
知識點1 64位 pip 安裝 cv2 使用pip的方法進行安裝64位的。pip install opencv python 請參考知識點2 問題 modulenotfounderror no module named pylab 原因 pylab 模組是一款由python提供的可以繪製二維,三維資...
程式設計常見問題
1 warning address of local variable xx returned wreturn local addr 原因 在函式內部定義變數,並返回 char xx 64 return xx 這樣函式內部定義的變數在函式結束時被釋放掉,所以返回是找不到的。改為char xx cha...
虛擬機器和主機socket程式設計常見問題
1.sock 呼叫失敗10049 解決方法 bind 函式要求伺服器端必須是自己的ip位址,例如虛擬機器為伺服器端,主機為客戶端,首先在虛擬機器命令視窗ping主機ip位址,若成功則說明兩端可以連線,使用ipconfig,將虛擬機器ipv4位址作為伺服器位址即可。2.sock 呼叫失敗10060 解...