C
carolson2
Unregistered / Unconfirmed
GUEST, unregistred user!
环境: Delphi 7 自带的idtcpserver client
Client部分是这样操作的: 不考虑服务器状态,只try except。如果server中断也不产生什么后果(会重新连接)
Client 接到服务机发来的消息后立刻反馈一个。 比如 Server.Writeln(string), client用readln 循环读,一旦有指定的立刻反馈一个string Client.writeln...., client 每间隔30秒writeln 一个string给server
Server部分,因为同时连接的客户很多,上百上千个。经过测试,如连接的客户很少就没问题。 如多了,则如果server 只接收没问题。 一旦接收并反馈就出问题了。
我把所有涉及到tcp连接的都放在try中了。但是server总是无任何提示的就自己退出了
关键代码如下,盼解决!
在 procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
内:
try
ThisIP:=athread.Connection.socket.Binding.PeerIP;
myCMD:='mingling ';
except
myCMD:='';
end;
if myCMD='mingling' then
begin
try
checklistbox.lines.add(myCMD);
... ... 其他都是些不出现except的
except
end;
end;
在server发消息的button 内:
procedure TForm1.Button1Click(Sender: TObject);
代码:
var
i:integer;
begin
with IdTCPServer1.Threads.LockList do
for i:=0 to count -1 do
begin
sleep(10);
try
TIdPeerThread(Items).Connection.WriteLn('mingling');
except
// except 不操作,这样不用管client是否还在了 :) 比如意外断等等。
end;
end;
IdTCPServer1.Threads.UnlockList;
end;
Client部分是这样操作的: 不考虑服务器状态,只try except。如果server中断也不产生什么后果(会重新连接)
Client 接到服务机发来的消息后立刻反馈一个。 比如 Server.Writeln(string), client用readln 循环读,一旦有指定的立刻反馈一个string Client.writeln...., client 每间隔30秒writeln 一个string给server
Server部分,因为同时连接的客户很多,上百上千个。经过测试,如连接的客户很少就没问题。 如多了,则如果server 只接收没问题。 一旦接收并反馈就出问题了。
我把所有涉及到tcp连接的都放在try中了。但是server总是无任何提示的就自己退出了
关键代码如下,盼解决!
在 procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
内:
try
ThisIP:=athread.Connection.socket.Binding.PeerIP;
myCMD:='mingling ';
except
myCMD:='';
end;
if myCMD='mingling' then
begin
try
checklistbox.lines.add(myCMD);
... ... 其他都是些不出现except的
except
end;
end;
在server发消息的button 内:
procedure TForm1.Button1Click(Sender: TObject);
代码:
var
i:integer;
begin
with IdTCPServer1.Threads.LockList do
for i:=0 to count -1 do
begin
sleep(10);
try
TIdPeerThread(Items).Connection.WriteLn('mingling');
except
// except 不操作,这样不用管client是否还在了 :) 比如意外断等等。
end;
end;
IdTCPServer1.Threads.UnlockList;
end;