Socket TCP 監聽失敗 10022

2021-08-30 17:55:00 字數 1200 閱讀 7645

在實現tcp通訊的多執行緒中,出現了乙個問題,監聽函式會報錯:

//繫結位址到伺服器

int ret=

bind

(listenser,

(sockaddr*

)&saddr, slen);if

(ret== socket_error)

//監聽連線請求

int li=

listen

(listenser,50)

;if(li == socket_error)

此時進行編譯,會報錯:

error c2440: 「初始化」: 無法從「std::_binder」轉換為「int」
剛開始先嘗試不要返回值試試:

bind

(listenser,

(sockaddr*

)&saddr, slen);/*

if (ret== socket_error)

此時再次編譯,發現編譯成功。

但是控制台卻報錯:

f12看一下,這個bind居然是functional.h裡的乙個函式,而我們要使用的bind應該是winsock2.h裡的。

其實這個錯誤是因為出現了同名的函式名,而編譯器預設為這個bind函式為另乙個function 中的bind函式。進而導致bind函式出現問題,隨之listen函式也出現了問題。

解決方法:

使用限定符鎖定bind函式

int ret=_winsock2api_::bind(listenser, (sockaddr*)&saddr, slen);

或者 int ret=::bind(listenser, (sockaddr*)&saddr, slen);

啟動失敗 oracle啟動監聽失敗

我剛安裝的oracle,用命令啟動監聽,出現以下錯誤 c documents and settingsbaby lsnrctl start lsnrctl for 32 bit windows version 10.2.0.1.0 production on 25 10月 2009 14 57 08...

oracle 監聽服務啟動失敗

檢查 監聽的host的主機名是否存在 etc hosts 檢視 如果沒有則新增,前面對應伺服器ip 後面為主機名 修改oracle的監聽host oracle product 11.2.0 dbhome 1 network admin vim listener.ora generated by or...

browser sync 檔案監聽失敗的解決方案

為了方便實時預覽前端開發過程中修改原始碼後的頁面,我在全球最大的同 友網github中找到了乙個非常實用的工具,browser sync。安裝使用方式請自行到官網參考文件,倉庫位址在這裡 getstart中官網給出的cli示例命令為 browser sync start server files c...