Indy控件高手请进。关于Indy UDP收到信息的。

DinkyYeung 2004-05-08 08:09:21
我想使用发IndyUDP来发信息,信息可以包含图形所以要使用流来发送

发送流,我使用这样
procedure TFSendMsg.SendMsg;
var
i: integer;
ReceList, ReceFlagList: TStrings;
SendStream: TMemoryStream;
ABuffer: Pointer;
begin
ReceList := TStringList.Create;
ReceFlagList := TStringList.Create;
GetReceList(ReceList, ReceFlagList);

SendStream := TMemoryStream.Create;
MsgContext.Lines.SaveToStream(SendStream);



GetMem(ABuffer, SendStream.Size);
SendStream.Seek(0, soFromBeginning);
SendStream.ReadBuffer(ABuffer^, SendStream.Size);

for i := 0 to ReceList.Count - 1 do
begin
case StrToInt(ReceFlagList[i]) of
UT_WORKGROUP: //到整个工作组
begin
end;
UT_USER: //用户
begin
IdUDPC.Host := ReceList[i];
IdUDPC.SendBuffer(ABuffer^, SendStream.Size); // SizeOf(ABuffer));
end;
end;
end;
SendStream.Free;
SetHint(IS_MSGSENDED);
//DKComm.ShowInfo(IS_MSGSENDED);
end;

接收流信息这样
procedure TFMainForm.IdUDPSUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
i: integer;
ReceStream: TMemoryStream;
ABuffer: Pointer;
ActReadSize: Integer;
const
bufSize = 4096;
begin
inherited;

GetMem(ABuffer, AData.Size);
AData.ReadBuffer(ABuffer^, AData.Size);

ReceStream := TMemoryStream.Create;
ReceStream.WriteBuffer(ABuffer^, AData.Size);
MsgContext.Lines.LoadFromStream(AData);
Self.BringToFront;
ReceStream.Free;
end;

我试了很多种方法都不行。应该怎么样,帮帮忙
...全文
118 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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