当我收到的数据Numberbytes大于2048就不能接收成功,是什么原因?怎么解决。

liangyong007a 2004-05-12 05:47:09
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
mystream:Tmemorystream;
tmpstr:string;
RecData: array of byte;
Rs:ansistring;
i:integer;
begin
mystream:=Tmemorystream.create;
try
NMUDP1.ReadStream(mystream);
setLength(RecData,Numberbytes);
mystream.Read(Pchar(RecData)^,Numberbytes);
for I := low(RecData) to high(RecData) do
Rs := Rs + IntToHex(RecData[I],2);

memo2.Clear;
memo2.Lines.Add(Rs);
finally
mystream.free;
end;
end;

当我收到的数据Numberbytes大于2048就不能接收成功,是什么原因?怎么解决。
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Heyongfeng 2004-06-07
  • 打赏
  • 举报
回复
建议用INDY组件,NMUDP有限制的,
stick77 2004-05-14
  • 打赏
  • 举报
回复
TNMUDP在局域网内最大限制是2048
starcbh 2004-05-14
  • 打赏
  • 举报
回复
是有限制的
liangyong007a 2004-05-13
  • 打赏
  • 举报
回复
提示就是:“stream write error”,就这样。
liangyong007a 2004-05-13
  • 打赏
  • 举报
回复
这行不成功:
NMUDP1.ReadStream(mystream);
但是,我收到的数据Numberbytes小于2049就成功。大于就出错
longerboy 2004-05-12
  • 打赏
  • 举报
回复
不成功是什么地方不成功啊


NMUDP1.ReadStream(mystream);
setLength(RecData,Numberbytes);
mystream.Read(Pchar(RecData)^,Numberbytes);
for I := low(RecData) to high(RecData) do
Rs := Rs + IntToHex(RecData[I],2);
你可以调试 看看哪行不成功
liangyong007a 2004-05-12
  • 打赏
  • 举报
回复
控件没有设buffersize的地方吧?
一点点凋落 2004-05-12
  • 打赏
  • 举报
回复
控件的buffersize是多大?
qingenerp 2004-05-12
  • 打赏
  • 举报
回复
你最好把要接受的分成好多份,自己定义协议一点一点的传
网上的QQ就是这样的。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧