L lovermaple Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-16 #1 用NMUDP控件传输视频数据帧,每帧大小是921600,我改了project的线程传输数据限制, 可以一次就传输完,但是作为接收端却一点反应都没有 是不是数据的大了就丢失了,???
X xialin2 Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-16 #2 不知道怎么改了.可以要写出部分代码才好分析,希望有人做过类似的程序, 只能学习,帮忙顶一下了
W wangzheking Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-16 #3 使用UDP傳輸數據包,其字節大小不得超過2048byte,如果超過會產生不能正常接收的問題,建議採取分包的做法,即將一個數據包按2048字節分成若幹,然後在接收端將分開的數據庫組合。我採用的是stream分包合包的方法,不會產生丟失和錯誤
使用UDP傳輸數據包,其字節大小不得超過2048byte,如果超過會產生不能正常接收的問題,建議採取分包的做法,即將一個數據包按2048字節分成若幹,然後在接收端將分開的數據庫組合。我採用的是stream分包合包的方法,不會產生丟失和錯誤
L lovermaple Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-17 #4 用stream怎么分包合包?这样还是要很久啊, 我分段传,延时太大了 郁闷,没人告诉我怎么解决吗? 或者给个压缩的原码给我? 用自带的那个zlib,好象还是大了, 不能传~
W wei_feng2 Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-17 #5 一点反应都没有,是不是端口和主机名不对? 建议用stream 发送: var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; try MyStream.Write( , );//参数 NMUDP1.SendStream(MyStream); finally MyStream.Free; end; end; 接收: var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; try NMUDP1.ReadStream(MyStream); MyStream.Read( , )//参数 finally MyStream.Free; end; end;
一点反应都没有,是不是端口和主机名不对? 建议用stream 发送: var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; try MyStream.Write( , );//参数 NMUDP1.SendStream(MyStream); finally MyStream.Free; end; end; 接收: var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; try NMUDP1.ReadStream(MyStream); MyStream.Read( , )//参数 finally MyStream.Free; end; end;
W wangzheking Unregistered / Unconfirmed GUEST, unregistred user! 2003-06-17 #7 在局域網還是internet進行傳輸?在局域網不會產生延遲的,internet會根據網絡狀況或帶寬產生一定時間的延遲,或丟失數據包。 分包的方法是: 設置stream.Position:=0; 定義一個SendStream,其大小為2048byte,從stream中取出2044個byte對這個sendStream進行賦值,其余4個byte設置成這個數據包的序號。然後將這個sendStream從UDP控件發送出去。接收方接收到這樣的數據包,首先讀取數據包序號,然後再根據序號將若幹分開的數據包合成一個stream,這個stream與發送端的stream一致
在局域網還是internet進行傳輸?在局域網不會產生延遲的,internet會根據網絡狀況或帶寬產生一定時間的延遲,或丟失數據包。 分包的方法是: 設置stream.Position:=0; 定義一個SendStream,其大小為2048byte,從stream中取出2044個byte對這個sendStream進行賦值,其余4個byte設置成這個數據包的序號。然後將這個sendStream從UDP控件發送出去。接收方接收到這樣的數據包,首先讀取數據包序號,然後再根據序號將若幹分開的數據包合成一個stream,這個stream與發送端的stream一致