全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2196
推到 Plurk!
推到 Facebook!

Indy TIdTcpClient 在網路很快時會掉包

尚未結案
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-03 23:47:37 IP:219.68.xxx.xxx 訂閱
在下面的簡單的 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]
系統時間:2017-10-17 8:03:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!