2 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
建議在調(diào)用closesocket()函數(shù)前判讀你所要關(guān)閉的socket是否存在(可能創(chuàng)建時(shí)就失敗,或者中間已經(jīng)關(guān)閉此socket)
if(s!=INVALID_SOCKET)
closesocket(s);
用GetLastError()函數(shù)的返回值判斷下是什么錯(cuò)誤所產(chǎn)生的異常,用msdn查下closesock的函數(shù)返回值,下面有異常的類型

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
你既然用的CSocket來(lái)定義 s,就不能用 closesocket來(lái)關(guān)閉s,而要用CSocket自己的成員函數(shù)Close來(lái)關(guān)閉。
CSocket是封裝后的類,對(duì)它你不能再用底層的socket接口,比如
closesocket, 要用closesocket來(lái)關(guān)閉 SOCKET類型的,你就必須用 socket() 函數(shù)產(chǎn)生的socket,而不能用 CSocket類。
添加回答
舉報(bào)