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

Chinaunix

標(biāo)題: 請(qǐng)教個(gè)socket編程的問題,謝謝 [打印本頁(yè)]

作者: fire_vr    時(shí)間: 2015-02-09 18:19
標(biāo)題: 請(qǐng)教個(gè)socket編程的問題,謝謝
我最近在寫個(gè)socket程序時(shí),需要了些問題。請(qǐng)大俠們指導(dǎo),謝謝。
我的Kernel是3.4.16,跑在Qualcomm 9x15上的。

我這邊是TCP的client,server是一個(gè)運(yùn)行在PC上的應(yīng)用程序,PC上的程序是廠家的,我們沒法調(diào)試。

我的TCP client已經(jīng)做好了,具體內(nèi)容大概是client這邊把數(shù)據(jù)發(fā)到PC上的程序,再?gòu)腜C那邊接收消息。。

在做測(cè)試時(shí),有時(shí)候我發(fā)現(xiàn)我的client的接收select()的返回值一直都是0(我的socket是非堵塞的,接收select的timeout是2s),但沒有socket的出錯(cuò)信息。
如果把網(wǎng)線拔掉或者關(guān)掉server,接收select()還是一直返回0,無(wú)論如何select也不會(huì)返回負(fù)值。
但是,在接收select()返回0時(shí),我手動(dòng)kell掉client的程序,再重啟,和server連接是正常的,說(shuō)明server沒問題,網(wǎng)路也沒問題。

所以感覺是我這邊client的問題。但如果socket出錯(cuò)了,接收select()為什么是返回0呢?返回0指的是timeout的正常情況吧。
請(qǐng)問大俠怎么debug呢?謝謝!
作者: weishuo1999    時(shí)間: 2015-02-10 10:24
你拔網(wǎng)線應(yīng)該是返回0的,因?yàn)檎G闆r下,tcp在不使用心跳的情況下(即使使用一般是2個(gè)小時(shí)一次心跳檢查),是沒辦法知道對(duì)方已經(jīng)斷掉的

至于你說(shuō)的關(guān)server,要看哪種關(guān)法,是kill掉,關(guān)機(jī),還是直接斷電,一般kill和關(guān)機(jī),client是能感知道server端斷掉了,如果是直接斷點(diǎn)一般無(wú)法感知

再其次,客戶端select的寫法也很重要,要是用錯(cuò)參數(shù),那這樣的結(jié)果也很正常。
作者: fire_vr    時(shí)間: 2015-02-10 20:01
回復(fù) 2# weishuo1999
你好,我把select去掉了,改成堵塞的模式。但是也是不行啊。跑著跑著就斷了,但socket什么錯(cuò)誤都沒有返回。你說(shuō)的心跳檢測(cè)具體是哪些接口?
謝謝

   
作者: mailmayulin    時(shí)間: 2015-02-11 09:57
會(huì)不會(huì)是服務(wù)端在收到你發(fā)的數(shù)據(jù)后,主動(dòng)將套接字關(guān)閉掉了。這樣返回的也應(yīng)該是0?梢宰约簩懸粋(gè)server端模擬這種情況
作者: BetonArmEE    時(shí)間: 2015-02-11 10:33
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: weishuo1999    時(shí)間: 2015-02-11 10:47
我說(shuō)的心跳是指這個(gè)
const int on = 1;
setsockopt(oSvrSock.iSockfd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)); 這個(gè)是開啟keepalive的功能,但是估計(jì)和你的情況關(guān)系不大,你可以考慮貼出代碼看看
回復(fù) 3# fire_vr


   
作者: BetonArmEE    時(shí)間: 2015-02-11 13:50
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: hospitaltnt2    時(shí)間: 2015-02-13 09:36
斷了重新連接就是了
作者: fire_vr    時(shí)間: 2015-02-13 17:44
多謝各位的幫忙!這個(gè)問題找到了,主要是內(nèi)網(wǎng)不穩(wěn)定,網(wǎng)線直連的話就沒問題?磥(lái)要設(shè)計(jì)應(yīng)用的心跳了。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2