線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2202
推到 Plurk!
推到 Facebook!

有關BCB的UDP傳送

答題得分者是:brook
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-04 20:06:39 IP:61.219.xxx.xxx 未訂閱
請問各位大大 小弟的程式之前使用RS-232時都正確 但最近改用UDP作為通訊 1)但在通訊一段時間後卻會發生EStackOverflow的訊息 請問這要如何解決?? 2)如果遇到傳送出去但對方無回應,此時若要做retry 那前一筆資料要如何去除掉??? 謝謝 ben@mirle.com.,tw
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-04 21:37:55 IP:61.221.xxx.xxx 未訂閱
引言: 請問各位大大 小弟的程式之前使用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-05 12:55:37 IP:210.202.xxx.xxx 未訂閱
大大您好 小弟在加入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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-05 14:37:32 IP:218.160.xxx.xxx 未訂閱
這一段程式好像沒有錯,要查其他的地方.還有sleep要在發送的時候,不是在接收的時候.
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-09 08:52:24 IP:210.202.xxx.xxx 未訂閱
感謝大大的指教
系統時間:2024-04-25 8:04:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!