亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2626 | 回復(fù): 8
打印 上一主題 下一主題

緊急求助linux下網(wǎng)絡(luò)編程高手 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-01-07 23:19 |只看該作者 |倒序?yàn)g覽
最近負(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)問題都沒有的 .這又是為什么呢?
請指教,謝謝~!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-01-08 09:20 |只看該作者
很可能是線程之間的同步阿什么沒做好,比如在recv返回0后free了某塊內(nèi)存,但在其他線程中還在繼續(xù)使用,但如果是這樣的話,似乎無法解釋第二種現(xiàn)象,多打印點(diǎn)信息出來找毛病比較容易些。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-01-08 09:24 |只看該作者
  printf大法!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-01-08 09:35 |只看該作者
makefile 里,-g 打開
core信息打開,看是否產(chǎn)生core文件,如果有的話,看core文件的信息
如果是kill的話,應(yīng)該有sig的,如果沒有的話,估計(jì)是core了。你先看看core在哪里再從那里去找問題

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-01-08 10:42 |只看該作者
第一個(gè)問題懷疑你寫的程序本身可能有問題,連接關(guān)閉后可能有一些非法操作,導(dǎo)致還沒有進(jìn)入SIGPIPE就退出了。查查是否還收到了其它信號(hào)。
第二個(gè)問題可能是TIME_WAIT狀態(tài)導(dǎo)致的,不過你沒有敘述清楚,只是猜測。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-01-08 14:00 |只看該作者
今天上午仔細(xì)測試了一下,我把RECV()函數(shù)的返回值打印出來,結(jié)果發(fā)現(xiàn):跟TCP&UDP工具相連時(shí),關(guān)閉此服務(wù)端程序,RECV()函數(shù)返回的是0,用perror()函數(shù)打印的錯(cuò)誤是:“secuss !”,我的client程序正常往下執(zhí)行;但是跟我同事的SERVER相連時(shí),他關(guān)閉SERVER端,我的RECV()函數(shù)返回的是-1而不是0,用perror()函數(shù)打印的錯(cuò)誤是:“connected reset by peer”,我覺得這個(gè)RESET不應(yīng)該是在他的SERVER端套接字關(guān)閉之后我的CLIENT端往對(duì)方發(fā)送數(shù)據(jù)引起的,因?yàn)槲以跍y試之前關(guān)閉了SEND()函數(shù),也就是說測試的時(shí)候程序根本沒有調(diào)用這個(gè)SEND()函數(shù),那么這個(gè)“connected reset by peer”是什么原因產(chǎn)生的呢?搞清楚了這個(gè)原因,應(yīng)該就可以解決這個(gè)問題了。
使用TCP&UDP工具相連時(shí),不管有沒有調(diào)用SEND()函數(shù),都不會(huì)有這個(gè)復(fù)位的錯(cuò)誤。

[ 本帖最后由 mouse2000 于 2008-1-8 14:04 編輯 ]

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2008-01-08 14:18 |只看該作者
那就是你自己的程序?qū)懙貌唤。發(fā)送RST有多種原因,最可能是對(duì)方的接收緩沖區(qū)中還有數(shù)據(jù)沒有讀出來就close那個(gè)socket了(windows下不知道這種情況會(huì)不會(huì)發(fā)送RST,linux下會(huì)),還有就是對(duì)方設(shè)置了那個(gè)linger。我們在寫socket程序的時(shí)候,要能夠處理所有異常情況,不要以為對(duì)方會(huì)按我們的期望發(fā)送數(shù)據(jù)過來,也不要以為對(duì)方會(huì)按tcp ip協(xié)議的規(guī)范發(fā)送數(shù)據(jù)過來,一切外來數(shù)據(jù)都需要小心檢查

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2008-01-08 14:22 |只看該作者
也不要以為對(duì)方會(huì)按tcp ip協(xié)議的規(guī)范發(fā)送數(shù)據(jù)過來

這個(gè)太過分了

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2008-01-08 14:25 |只看該作者
呵呵,是有些過份,這些都是協(xié)議棧考慮過了的問題,應(yīng)用程序應(yīng)該不用考慮了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP