全部“可用积分”送上,求教,关于 IdTCPServer1 和 IdTCPClient1 的使用 ( 积分: 28 )

  • 主题发起人 主题发起人 SuKiDelphi
  • 开始时间 开始时间
S

SuKiDelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
Client 代码:

procedure TMyClient.Button1Click(Sender: TObject);
begin
with IdTCPClient1 do
begin
try
WriteLn('info'); // 通知服务器
// 想写到服务器去
// 这里想写的格式是:

// Client 计算机名:
// 时间:
// 其它:
// 其它

except
end;
end;
end;



Server 代码:


procedure TMyServer.IdTCPServer1Execute(AThread: TIdPeerThread);
var
Command : String;
begin
Command := AThread.Connection.ReadLn;

if Command = 'info' then
begin
读入Client发过来的, 可能有 200 台电脑(上面的Client)同时要发信息过来, 要分出来
// Client 计算机名:
// 时间:
// 其它:
// 其它
end;
end;
 
type
TCommBlock = record // (Server+Client)都需要定义
hostnmae,
atime,
other1,
other2: string[100];
end;

procedure TMyClient.Button1Click(Sender: TObject);
var
CommBlock: TCommBlock;
begin
with IdTCPClient1 do
begin
try
WriteLn('info'); // 通知服务器
/ 想写到服务器去
// 这里想写的格式是:

CommBlock.hostnmae := gethostname();;/// Client 计算机名:
CommBlock.atime := now();/// 时间:
CommBlock.other1 :='其他';// 其它:
CommBlock.other2 :='其他2';// 其它


WriteBuffer (CommBlock, SizeOf (CommBlock), true);
except
end;
end;
end;


procedure TMyServer.IdTCPServer1Execute(AThread: TIdPeerThread);
var
//Command : String;
CommBlock: TCommBlock;
begin
// Command := AThread.Connection.ReadLn;

if Command = 'info' then
begin
AThread.Connection.ReadBuffer (CommBlock, SizeOf (CommBlock));
读入Client发过来的, 可能有 200 台电脑(上面的Client)同时要发信息过来, 要分出来
// Client 计算机名:CommBlock.hostname
// 时间:CommBlock.atime
// 其它:
// 其它
end;
end;
直接在浏览器里写的,不对的地方自己调整下
 
[red]谢谢你!!!![/red]
 
晕, 现在发觉,

procedure TMyClient.Button1Click(Sender: TObject);
var
CommBlock: TCommBlock;
begin
with IdTCPClient1 do
begin
try
WriteLn('info'); // 通知服务器
/ 想写到服务器去
// 这里想写的格式是: TStringList, 试了一晚, 写不了"TStringList"
//WriteBuffer (CommBlock, SizeOf (CommBlock), true);
except
end;
end;
end;

还请再帮一帮!!!!
 
type
TCommBlock = record // (Server+Client)都需要定义
hostnmae,
atime,
other1,
other2: string[100];
AThread: TIdPeerThread;//注意
end;

var
online:array or TCommBlock


--------
procedure TMyServer.IdTCPServer1Execute(AThread: TIdPeerThread);
var
//Command : String;
CommBlock: TCommBlock;
i:integer;
begin
// Command := AThread.Connection.ReadLn;

if Command = 'info' then
begin
AThread.Connection.ReadBuffer (CommBlock, SizeOf (CommBlock));
for i:=0 to high(online) do
begin
if online.hostnmae:=CommBlock.hostnmae;
online.AThread=AThread;
end;
读入Client发过来的, 可能有 200 台电脑(上面的Client)同时要发信息过来, 要分出来
// Client 计算机名:CommBlock.hostname
// 时间:CommBlock.atime
// 其它:
// 其它
end;
end;

---------
通过AThread就知道是那个TCPIDclient发来的数据了。
 
谢谢你!!!!
 

Similar threads

后退
顶部