有關BCB的UDP傳送 |
答題得分者是:brook
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問各位大大 小弟的程式之前使用RS-232時都正確 但最近改用UDP作為通訊 1)但在通訊一段時間後卻會發生EStackOverflow的訊息 請問這要如何解決?? 2)如果遇到傳送出去但對方無回應,此時若要做retry 那前一筆資料要如何去除掉??? 謝謝 ben@mirle.com.,tw lin11112 你好: (1)試試每傳送一個封包以後,就 Sleep 一段時間,再傳送下一個封包 (2)這跟你封包的設計有關,基本上 UDP 來說,封包掉了也就算了,可是如果你 不能讓封包掉,又要使用 UDP 的話,除了接收端要回應之外,傳送的封包資 料結構最好也能夠設計一個很簡單的檢查機制,這樣一來,就算接收端無回 應,卻已經收到封包,傳送端又重新送一次的話,接收端也可以知道這是重 送的封包...把握相關原則即可-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
大大您好
小弟在加入waiting後
仍會產生EStackOverflow的訊息
程式碼如下
void __fastcall TFormMain::m_NMUDPDataReceived(TComponent *Sender, int NumberBytes, AnsiString FromIP, int Port)
{
int i, j, k, copyLen, BufferLength, Value;
byte Buffer[1000];
byte Data;
DWORD tick; if( NumberBytes <= 0) return;
if( NumberBytes >= 500) return;
m_NMUDP->ReadBuffer( (char*)Buffer, NumberBytes, BufferLength);
tick = GetTickCount();
while( 1)
{
Application->ProcessMessages();
if( GetTickCount() - tick > 100) break;
} }
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
lin11112
初階會員 發表:42 回覆:83 積分:25 註冊:2003-02-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |