Indy TIdTcpClient 在網路很快時會掉包 |
尚未結案
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
在下面的簡單的 thread 中 IdTcpClient 必須不停的 write - read
但是當 網路很快時例如區網內或127.0.0.1 時,有時會卡在A點 ,可以確定Server端有送出資料, 但是client 端遺失了,所以就永遠在那裡等待 直到timeout... 網路沒問題,也不是firewall 攔截封包 接收時,在 readbytes 前 不是會丟到 InputBuffer 嗎 怎麼還會遺失? 有人知道是什麼原因嗎? ver Indy10.1.5 [code cpp] unsigned __stdcall TrdRecvfun(voit* param) { TIdIOHandler * IOH = IdTcpClient->IOHandler ; while(IdTcpClient->Connected()) { //process data.... IOH->WriteDirect(...); // write request.... // 會卡在下面, A 點 while(IOH->InputBufferIsEmpty()) { IOH->CheckForDataOnSource(_ReadTimeOut) ; } IOH->ReadBytes(step 1); // read data header // process IOH->ReadBytes(step 2); // read data contents. //process other data.... } } [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |