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