CH395作為TCP客戶端,連接電腦TCP服務(wù)端,有時(shí)連接時(shí)間很長(zhǎng),需要2分鐘左右,這個(gè)問題是什么原因

CH395作為TCP客戶端,電腦作為TCP服務(wù)端,第一次連接時(shí)很快就能連接上只需1秒。

TCP客戶端與TCP服務(wù)端進(jìn)行數(shù)據(jù)發(fā)輸2,3次后,在電腦TCP服務(wù)端斷開TCP連接后,電腦TCP服務(wù)端再開監(jiān)聽,CH395客戶端再去連接,這時(shí)需要時(shí)間很長(zhǎng)2分鐘左右 。

如果CH395不回送通訊數(shù)據(jù),在電腦TCP服務(wù)端斷開TCP連接后,電腦TCP服務(wù)端再開監(jiān)聽,CH395客戶端再去連接也可以很快連接上。

如果再次連接時(shí)將TCP通訊的端口號(hào)換一個(gè)新的,也可以快速連接上。


請(qǐng)問各位有沒有遇到上述現(xiàn)象,是什么原因造成的?能不能解決?

您好,這是服務(wù)端的一種連接/防連接機(jī)制,當(dāng)服務(wù)器進(jìn)程關(guān)閉,想立刻再復(fù)用原來的ip和端口需要等待2MSL時(shí)間,MSL是數(shù)據(jù)包最大存活時(shí)間。因?yàn)門CP四次揮手最后一步TIME_WAIT需要等待應(yīng)答,如果等不到需要重連。

有的服務(wù)器會(huì)有REUSE可選項(xiàng)或者默認(rèn)功能,可以讓服務(wù)器進(jìn)程立刻復(fù)用服務(wù)器端口。


謝謝TECH48!那要解決連接連接慢的問題,只能從TCP服務(wù)端下手師是不是?

我還有一個(gè)疑問,我用的網(wǎng)格調(diào)試助手NetAssist.exe在兩電腦之間,一個(gè)為服務(wù)端,一個(gè)為客戶端進(jìn)行TCP通訊,不管怎么斷開都能很快連接上。這么看又不是電腦調(diào)試助手的問題。能不能通過配置CH395解決這個(gè)問題?如何配置?


您好,可以更改395的socket本地端口,會(huì)直接連上對(duì)方的服務(wù)端。



我用CH579也存在這個(gè)問題,經(jīng)過抓包發(fā)現(xiàn)是網(wǎng)絡(luò)庫程序在斷開連接的時(shí)候少發(fā)了一個(gè)數(shù)據(jù)包所致。

按照規(guī)范,TCP斷開連接時(shí)要進(jìn)行四次揮手,而沁恒網(wǎng)絡(luò)庫在處理斷開連接時(shí),只有三次揮手過程,少一個(gè)ACK包。也就是說,服務(wù)器發(fā)出了斷開連接請(qǐng)求后,客戶端沒有返回ACK,導(dǎo)致服務(wù)器一直等待,直到過去很長(zhǎng)時(shí)間超時(shí)以后,服務(wù)器才會(huì)放棄等待,確認(rèn)斷開。在此期間,因?yàn)榉?wù)器端認(rèn)為原來的連接還未徹底斷開,因此同一個(gè)端口號(hào)不能再次使用。


后經(jīng)多次查證和實(shí)驗(yàn),斷開連接的三次揮手也不能算是bug,在不同場(chǎng)合很常見的,有的也能工作的很好。

可能取決于服務(wù)端的應(yīng)用程序編寫特點(diǎn)。某些服務(wù)端程序比較死板,三次揮手不認(rèn),必須死等直到超時(shí)。有的服務(wù)端程序就可以接受三次揮手。

網(wǎng)絡(luò)調(diào)試助手Net*****就是要求比較嚴(yán)格的那類,還有****的一個(gè)網(wǎng)絡(luò)調(diào)試助手,斷開連接后都不能再次連接。

換一個(gè)其它網(wǎng)絡(luò)調(diào)試助手就可以了。


(補(bǔ)充說明:暫時(shí)收回上面那段文字,之前測(cè)試的時(shí)候確實(shí)是那個(gè)樣子,今天發(fā)完這個(gè)貼我又測(cè)試了一下,結(jié)果完全沒有問題了,同樣的電腦和網(wǎng)絡(luò)調(diào)試助手,同樣的板子。搞不明白了。抓包還是三次揮手,也可以斷開連接馬上重連了。難道是和windows或防火墻有什么關(guān)系?)


謝謝health和TECH48回答!??

我測(cè)試時(shí),發(fā)現(xiàn)如果CH395做為客戶端只接收不發(fā)送,電腦服務(wù)端斷開后再監(jiān)聽,CH395去連接很快就能連接上。

如果CH395發(fā)送了數(shù)據(jù),斷開再去連接就會(huì)很慢。

如果CH395發(fā)送了數(shù)據(jù),過2分種斷開再去連接就很快連接上。

一般情況不會(huì)頻繁開斷。只要周期大于2分鐘就不會(huì)出現(xiàn)連接 花長(zhǎng)時(shí)間的情況。



正常情況下TCP服務(wù)端斷開會(huì)使CH395產(chǎn)生超時(shí)中斷,建議在超時(shí)中斷里加上關(guān)閉、打開、連接的三個(gè)socket操作。如下圖:

image.png


你好TECH48,你說“電腦端的TCP服務(wù)端斷開會(huì)做為客戶端的CH395產(chǎn)生超時(shí)中斷”,經(jīng)我測(cè)試并沒有發(fā)現(xiàn)CH395產(chǎn)生超時(shí)中斷,只產(chǎn)生了一個(gè)斷開中斷。

斷開后,電腦服務(wù)端再開監(jiān)聽,客戶端CH395這時(shí)去連接,CH395會(huì)產(chǎn)生連接超時(shí)中斷,在這個(gè)超時(shí)中斷中加上關(guān)閉,打開,連接的三個(gè)SOCKET操作,我也測(cè)試了沒有效果,? 一樣要不斷去連接2分鐘后才能連接成功。?


您好,建議最好還是每次連接的時(shí)候更改本地端口的設(shè)置。



我之前用的時(shí)候也是這樣,但是不知為何,現(xiàn)在一切正常了。

你把電腦的防火墻全關(guān)了,再試試,看看和這方面有沒有關(guān)系。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频