请教Delphi IndyUDP发送和接收的问题

 我来答
龙氏风采
2017-11-15 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
我使用TIDTcpClient及TIdTcpServer,
使用ReadLn及WriteLn正常.
但是我想发送记录类型,如何做呢?我的实现如下,但没有成功:
------------------------------------------------------------
type
TUser=record
UserName,UserID:String;
IP:String;
Port:Integer;
Msg:String;
Arr:Array[1..9] of shortString;
flag:Boolean;
Cmd:String;
end;
------------------------------------------------------------
实现如下:
------------------------------------------------------------
1.使用TidBytes类型:
客户:
procedure TForm1.Button3Click(Sender: TObject);
var
User:TUser;
sby:TidBytes;
begin
with user do
begin
UserName:='Wyatt';
UserID:='7895421';
Ip:='192.168.1.188';
Port:=9999;
Msg:=Edit3.Text;
cmd:='Quit';
end;
sBy:=RawTOBytes(user,sizeof(user));
ic1.IOHandler.Write(sBy);
end;
服务器:
procedure TFrmServer.is1Execute(AContext: TIdContext);
var
user:TUser;
buf:TidBytes;
begin
Acontext.Connection.IOHandler.ReadBytes(buf,sizeof(user));
BytesToRaw(buf,user,sizeof(user));
with user,memo1.Lines do
begin
Add(userName);
add(userID);
add(ip);
add(inttostr(port));
end;
end;
----------------------------------------------------------------
2.使用TStream方法:
客户:
procedure TForm1.Button3Click(Sender: TObject);
var
User:TUser;
Mon:TMemoryStream;
begin
with user do
begin
UserName:='Wyatt';
UserID:='85171659';
Ip:='192.168.1.188';
Port:=9999;
Msg:=Edit3.Text;
cmd:='Quit';
end;
Mon:=TMemoryStream.Create;
try
Mon.WriteBuffer(user,sizeof(user));
ic1.IOHandler.Write(Mon);
finally
Mon.Free;
end;
end;
服务器:
procedure TFrmServer.is1Execute(AContext: TIdContext);
var
user:TUser;
Mon:TMemoryStream;
begin
Mon:=TMemoryStream.Create;
try
AContext.Connection.IOHandler.ReadStream(Mon);
Mon.ReadBuffer(user,Sizeof(user));
with user,memo1.Lines do
begin
Add(userName);
add(userID);
add(ip);
add(inttostr(port));
end;
finally
Mon.Free;
end;
end;
以上都不能实现,请高手帮忙解决一下.
以上是在delphi2006

注意一定要Indy10,因为和Indy9不同
其中要注意Use IdContext,IdGlobal这两个单元
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式