socket程式設計常見問題筆記

2021-08-08 15:01:03 字數 618 閱讀 8850

如何設定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 解...