編寫多併發伺服器容易出現的錯誤及解決方法

2021-08-15 12:28:45 字數 572 閱讀 4712

完成多併發伺服器端socket**。實現方式是多執行緒。遇到問題:

(1)一開始出現accept :invalid argument.

原因有二:第一,可能是accept函式的第三個引數沒有初始化沒有給addrlen傳入合法的值,或者是沒有初始化(addrlen= sizeof(addr))。

第二: 在引數1處出錯,多半情況是sockfd值非法,也即是沒有繫結(bind),監聽(listen)或者是負值等。

解決方法:經過分析是在繫結那裡出錯。bind: address already in use

原因:作業系統沒有立即釋放埠

解決一:等待一段時間執行網路程式即可

解決二:通過setsockopt進行設定,關鍵**如下。

解決在close之後會有乙個wait_time,導致bind失敗的問題

2     int val = 1;

3     int ret =setsockopt(sfd,sol_socket,so_reuseaddr,(void *)&val,sizeof(int));

4     if(ret == -1)

5      

伺服器配置 常常出現的錯誤

伺服器配置 1 修改完引數,很多時候需要重啟 2 配置引數檔案中新增引數時,盡量加在檔案末尾。如果配置引數寫在檔案頭。很能之後有相同的引數又將你剛加的配置重新賦值了。3 檢查防火牆是否有影響 4 php是否安裝了相應的擴充套件模組 5 遇到伺服器無法啟動時,用ps aux grep 看看有沒有殘留程...

伺服器 雲伺服器出現502錯誤的原因與解決方案

雲伺服器出現502錯誤不用慌,當雲伺服器上面的 出現502錯誤時,說明伺服器作為閘道器或 從上游伺服器收到無效響應,本文宵雲網路將簡單的分析502錯誤的原因並提出解決方案。出現502錯誤的原因分析 將請求提交給閘道器,如php fpm執行,但是由於某些原因沒有執行完畢導致php fpm程序終止執行。...

編寫自己的伺服器

由於學習介面測試,對伺服器的原理產生濃厚興趣,對最近的收穫做個總結 由於瀏覽器本身就是客戶端,對伺服器進行發報並接受回報,進行解析顯示,所以客戶端就不進行編寫 伺服器 我主要遇到的問題是bind的ip及埠選取,bind的意思是設定伺服器的ip,這個如果是自己嘗試一般都是使用本機的ip即可,埠則是通過...