一个关于Idtcpserver,Idtcpclient的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 火鹰
  • 开始时间 开始时间

火鹰

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器端在接收到客户命令Comeontab后执行下列语句:
Ccomeontab:
begin
AThread.Connection.ReadBuffer(gamedata, sizeof(gamedata));
arraytab.playercount:=arraytab.playercount+1;
if gamedata.number=0 then
begin
arraytab.player[0]:=gamedata.Player;
arraytab.lab1:=gamedata.chariId;
end else
begin
arraytab.player[1]:=gamedata.Player;
arraytab.lab2:=gamedata.chariId;
end;
//发送第一条命令
ctext.command:=Cchangeuserinf;
Athread.Connection.WriteBuffer(ctext,sizeof(ctext));
//发送第二条命令
ctext.command:=CrefTab;
Athread.Connection.WriteBuffer(ctext,sizeof(ctext));
end;

客户端的响应:
procedure Ttcpthread.Execute;
begin
while not Terminated do
begin
IdTCPClient.ReadBuffer(ctext, sizeof(ctext));
case ctext.command of
Creftab:begin
frmmain1.label1.caption:='2222222222222222';
end;

Cchangeuserinf: begin
frmmain1.Label1.Caption:='111111111111111';
end;
end; //case
end;
end;
问题,为什么客户端总是第一条命令可以得到执行,而第二条命令得不到执行呢?请各位高手指点。
令求Idtcpserver,Idtcpclient控件的中文教程谢谢。。。
 
服务器端在接收到客户命令Comeontab后执行下列语句:
Ccomeontab:
begin
AThread.Connection.ReadBuffer(gamedata, sizeof(gamedata));
arraytab.playercount:=arraytab.playercount+1;
if gamedata.number=0 then
begin
arraytab.player[0]:=gamedata.Player;
arraytab.lab1:=gamedata.chariId;
end else
begin
arraytab.player[1]:=gamedata.Player;
arraytab.lab2:=gamedata.chariId;
end;
//发送第一条命令
ctext.command:=Cchangeuserinf;
Athread.Connection.WriteBuffer(ctext,sizeof(ctext));
//发送第二条命令
ctext.command:=CrefTab;
Athread.Connection.WriteBuffer(ctext,sizeof(ctext));
end;

客户端的响应:
procedure Ttcpthread.Execute;
begin
while not Terminated do
begin
IdTCPClient.ReadBuffer(ctext, sizeof(ctext));
case ctext.command of
Creftab:begin
frmmain1.label1.caption:='2222222222222222';
end;

Cchangeuserinf: begin
frmmain1.Label1.Caption:='111111111111111';
end;
end; //case
end;
end;
问题,为什么客户端总是第一条命令可以得到执行,而第二条命令得不到执行呢?请各位高手指点。
令求Idtcpserver,Idtcpclient控件的中文教程谢谢。。。
 
服务器端:
//发送第一条命令
ctext.command:=Cchangeuserinf;
Athread.Connection.WriteBuffer(ctext,sizeof(ctext));
//发送第二条命令
Athread.Connection.Writeln('CrefTab');

客户端的响应:
procedure Ttcpthread.Execute;
var vCommand:string;
begin
while not Terminated do
begin
IdTCPClient.ReadBuffer(ctext, sizeof(ctext));
case ctext.command of
Cchangeuserinf: begin
frmmain1.Label1.Caption:='111111111111111';
vCommand:=IdTCPClient.Readln;
if vCommand='CrefTab' then
frmmain1.label1.caption:='2222222222222222';
end;

end; //case
end;
end;
 
哦,我试下~
 
我也需要TIdTCPServer,TIdClient的资料的。
 
多人接受答案了。
 
后退
顶部