TThreadList的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 huangliang2005
  • 开始时间 开始时间
H

huangliang2005

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器端代码:
procedure TfrmMain.IdTCPServerConnect(AThread: TIdPeerThread);
var
ClientBBOX: PBBOXIDClient;
listClients: TThreadList;
begin
listClients := TThreadList.create;
GetMem(ClientBBOX, SizeOf(TBBOXIDClient));
ClientBBOX.DNS := AThread.Connection.Socket.Binding.PeerIP;
ClientBBOX.Connected := Now;
ClientBBOX.LastAction := ClientBBOX.Connected;
ClientBBOX.Thread := AThread;
AThread.Data := TObject(ClientBBOX);
try
listClients.LockList.Add(ClientBBOX);
finally
listClients.UnlockList;
end;
end;
客户端代码:
procedure TForm1.idTCPClientCTRLConnected(Sender: TObject);
var
cmdinfo: tcmdinfo;
begin
try
cmdinfo.StartChar := 94;
cmdinfo.CmdType := 2; //命令类型
cmdinfo.interfaceID := 2; //接口号
cmdinfo.FunctID := 0; //功能号
cmdinfo.Subtype := 0; //子类型编号
cmdinfo.NoID := '020';
idTCPClientCTRL.WriteBuffer(cmdinfo, sizeof(tcmdinfo));
except
Mrunlog.Lines.Add(FormatDateTime('YYYYMMDDHHMMSS', Now) + '连接 控制中心 失败:');
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
cmdinfo: tcmdinfo;
begin
try
idTCPClientCTRL.Host := '192.168.0.88';
idTCPClientCTRL.port := 8088;
idTCPClientCTRL.Connect();
cmdinfo.StartChar := 94;
cmdinfo.CmdType := 2;
cmdinfo.interfaceID := 2;
cmdinfo.FunctID := 0;
cmdinfo.Subtype := 0;
cmdinfo.NoID := '020';
idTCPClientCTRL.WriteBuffer(cmdinfo, sizeof(tcmdinfo));
Mrunlog.Lines.Add(FormatDateTime('YYYYMMDDHHMMSS', Now) + '连接 控制中心 成功');
except
idTCPClientCTRL.Disconnect;
Mrunlog.Lines.Add(FormatDateTime('YYYYMMDDHHMMSS', Now) + '连接 控制中心 失败');
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if IdTCPClientCTRL.Connected then
idTCPClientCTRL.DisconnectSocket;
end;
问题:客户连接、断开几次后再连接到就在listClients.LockList.Add(ClientBBOX)这一句停止,不能执行下面的语句了.各位大侠帮帮忙,分不够再加
 
???
listClients根本没初始化?这代码难道不会访问地址错误吗?
 
初始化了,在窗体的Destroy事件里也释放了,问题就是不停的连接、断开后就不执行了。
 
procedure TfrmMain.IdTCPServerConnect(AThread: TIdPeerThread);
var
ClientBBOX: PBBOXIDClient;
listClients: TThreadList;

这个过程里定义的,没有初始化,重复定义?
 
你的listClients是局部变量啊,你根本就没有初始化.可能你应该将listClients定义成全局变量.
 
是定义的全局的,也初始化了,我现在只是为了方便才写成局部的
 
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
type
TCP_KeepAlive = record
OnOff: Cardinal;
KeepAliveTime: Cardinal;
KeepAliveInterval: Cardinal;
end;
var
Val: TCP_KeepAlive;
Ret: DWord;
begin
Val.OnOff:=1;
Val.KeepAliveTime:=2000;
Val.KeepAliveInterval:=6000;
WSAIoctl(AThread.Connection.Socket.Binding.Handle, IOC_IN{ or IOC_VENDOR or 4},
@Val, SizeOf(Val), nil, 0, @Ret, nil, nil)

end;

加上这个过程就行了!断线2秒服务端自动检测到
 
如果你想花最少的钱学习流行的计算机技术,本人低价提供
计算机专业高清晰 视 频 教 程,所有教程由业内名家讲解,物超所值,
所有光盘4元/张,特快专递全国三天内到货.
联系方式:手 机:1 3 5 76145612(手机联系佳) Q Q:108410943
E-mail:ncncldjjg@126.com
1、Oracle9iOCP(Oracle认证专家DBA)视频教程(23CD)
2、SQL语言、数据挖掘、SQLServer2000视频教程(6CD)
3、计算机网络原理视频教程(4CD)
4、计算机实用组网技术视频教程(3CD)
5、MCSE(微软认证系统工程师)认证视频教程(11CD)
6、windows2003即学即会视频教程(6CD)
7、J2EE Web程序开发定向班/Java就业班视频教程
(java基础jsp核心技术UML设计)(13CD)
8、J2EE基础高级案例分析视频教程(9CD)
9、马士兵J2SE入门与精通(含坦克大战、BBS实例)视频教程(6CD)
10、java语言深入详解视频教程(12CD)
11、java技术从入门到精通视频教程(21CD)
12、javascript全接触视频教程(13CD)
13、各类网站源程序(9CD)
14、unix原理视频教程(3CD)
15、Linux软件开发工程师(C语言)视频教程(4CD)
16、Linux配置、管理、优化实战工程师视频教程(8CD)
17、Linux内核编程视频教程(11CD)
18、C语言详解视频教程(2CD)
19、VC++6.0(MFC)开发技术术详解视频教程(6CD)
20、ASP.NET中文视频教程(3CD)
21、洪恩C#入门多媒体教程(1CD)
22、XML技术视频教程(2CD)
23、操作系统视频教程(3CD)
24、网络技术基础视频教程(2CD)
25、数据结构视频教程(5CD)
26、清华大学计算机专业多媒体教程(数据结构、汇编、编译原理等)(13CD)
27、大学数学[离散数学线性代数概率与数理统计微积分]视频教程(22CD)
28、LearnKey Asp.Net (老外用英语讲课)(13CD)
29、LearnKey Asp.Net Webservice(老外用英语讲课)(5CD)
30、AppDev Asp.Net2.0 UsingC# (老外用英语讲课)(1CD)
31、APPDev .Net Framework(老外用英语讲课)(2CD)
32、林清安pro/e2001(野火版)视频教程(18CD)
33、深圳大学3D设计视频教程(4CD)
34、3DMAX建模视频教程(老外用英语讲课)(6CD)
35、3DMAX纹理与贴图材质灯光视频教程(老外用英语讲课)(5CD)
36、3DMAX格式500个常用模型库(4CD)
37、lightscape基础入门视频教程(2CD)
38、聚光制造(lightscape3.2入门与精通视频教程)(4CD)
39、coreldraw12中文版入门与精通swf格式视频教程(2CD)
 
后退
顶部