- 論壇徽章:
- 0
|
最近負(fù)責(zé)一個(gè)設(shè)備網(wǎng)絡(luò)模塊程序的開發(fā),采用TCP連接.設(shè)備是在linux下運(yùn)行client程序, server 端是在windows下運(yùn)行;設(shè)備網(wǎng)絡(luò)模塊采用多線程模式:一個(gè)線程負(fù)責(zé)簡歷和維護(hù)網(wǎng)絡(luò)連接 , 因?yàn)榭赡芫W(wǎng)絡(luò)狀況不是很好,有可能會(huì)斷線; 一個(gè)線程負(fù)責(zé)接受server端發(fā)過來的命令(使用recv()函數(shù))并負(fù)責(zé)解析命令,然后調(diào)用相應(yīng)的模塊 ; 另外一個(gè)線程對(duì)數(shù)據(jù)做相應(yīng)的處理后發(fā)送數(shù)據(jù)給server (使用send()函數(shù)) ;
在做測試的時(shí)候,跟server 連接后 , 只要server端程序一關(guān)閉 ,不管是正常關(guān)閉還是異常退出, 我設(shè)備client程序的接受線程的recv()函數(shù)首先返回0后 , 整個(gè)client進(jìn)程就會(huì)馬上掛掉 . 信息顯示是被內(nèi)核KILL掉的. 我的client程序已經(jīng)對(duì)SIGPIPE信號(hào)進(jìn)行捕捉并做了處理 ,但是根據(jù)出錯(cuò)時(shí)打印的信息顯示根本沒有進(jìn)入這個(gè)信號(hào)處理函數(shù) , 這幾天一直搞不明白我的程序?yàn)槭裁磿?huì)掛掉?請高手指點(diǎn)一二,謝謝~!
另外一種現(xiàn)象是在網(wǎng)上下載一個(gè)在windows平臺(tái)下的TCP&UDP工具, 在此工具上建立一個(gè)TCP服務(wù)器 ,我設(shè)備的client程序與之連接 ,雙方正在發(fā)送數(shù)據(jù), 我突然關(guān)閉此工具程序 , 但是我設(shè)備的client程序仍然可以完好繼續(xù)運(yùn)行,我反復(fù)測試了很多次, 一點(diǎn)問題都沒有的 .這又是為什么呢?
請指教,謝謝~! |
|