如何实现发送信息后,得到确认信息?(50分)

硝酸

Unregistered / Unconfirmed
GUEST, unregistred user!
[:D][:D]哎,这是一个难者不会,会者不难的问题:(
OnLineUserCount := Server.Socket.ActiveConnections;
for i := 0 to (OnLineUserCount -1) do
Server.Socket.Connections.SendText('xxxxxx');
在这段代码中,我希望,接收到信息的Client端,给我发一个确认信息,
如果我没有接收到确认信息,则,我好再给该Client端在发送一次,
问题是,我该怎样才能确定,是那位Client给我发的确认信息,以及,
这个确认信息是不是是确认我给它发的'xxxx'还是'xxxxxxxx'?
或者,谁有办法实现确认验证的另类方法?
希望有代码,50分不多,只是我也是穷人,就请先富起来的拉兄弟一把。
My E_mail := ybte@371.net;
 
这么难吗?还是嫌分少?
 
你可以在发送消息头里加一个编号啊,发送一次inc(),你用一个一维数组来保存最近
的5~10条消息,接受端接到消息后,在对因编号后面加个OK就返回收到消息。最好用
一个结构来处理。如果没有对应的编号返回的消息,你就重发。(这类似TCP的重发机制)
 

client收到信息后,发送确认信息,只要在该确认信息中
包含有标志该client的信息就行了,如机器名,ip地址之类的。
然后在connection查询一个应该可以查出的!

 
其实,我想这样做:我用一个全局变量来判断Client是否发送过确认,但是问题在于,
我处于一个不断发送信息的循环中,好像产生不了Read事件了,当然也就无法使那个
全局变量得到改变了。
ServerClientRead(....);
begin
OnLineUserCount := Server.Socket.ActiveConnections;
for i := 0 to (OnLineUserCount -1) do
begin
while not flag_certified do
begin
Server.Socket.Connections.SendText(OnLineUser());
form3.ServerClientRead();
end;
flag_certified := false;
end;
if socket.ReceiveText='ok' then
flag_certified := true;
end;
 
多人接受答案了。
 
顶部