Indy10 IdTCPServer 属性及事件

未标题-1 拷贝.jpg

以下代码在Delphi XE 10.2 Tokyo中编译通过,其中Indy版本:10.6.2


属性

1. Active:启动服务。

IdTCPServer1.Active:=True;

2. Bindings:网卡绑定集合对象,类型为TIdSocketHandles。集合元素为网卡绑定对象。可以为idTCPServer设置多个IP与端口,同时可以指定IP的版本。

IdTCPServer1.Bindings.Add.IP:='127.0.0.1';
IdTCPServer1.Bindings.Add.Port:=3515;

3. DefaultPort:默认监听端口

在服务启动后修改监听端口,需要先清除Bindings。

IdTCPServer1.active:=false
IdTCPServer1.Bindings.Clear;
IdTCPServer1.DefaultPort:=8000;
IdTCPServer1.Active:=true;

4. ListenQueue:允许最多监听的网络连接线程数目。依据需求和系统的承载能力来设定。

5. MaxConnections:服务端可以承载的最大的网络连接数目。如果取0,则代表没有最大限制。

6. ReuseSocket:本地地址中被重新使用的监听线程。

7. TerminateWaitTime:Active为False时, 结束所有已连接的客户端线程(PeerThread)的超时检测。如果超时, 则抛出超时异常。


事件

1. OnConnect:客户端连接成功事件

连接成功后,就可以获取客户端的IP,端口,及本机线程ID。其中要获取线程ID,需要添加线程池控件IdSchedulerOfThreadPool。

ClientIP:=AContext.Binding.PeerIP;
ClientPort:=AContext.Binding.PeerPort;
ClientTHID:=TIdYarnOfThread(AContext.Yarn).Thread.ThreadID;

2. OnDisConnect:客户端断开事件

断开事只有在客户端正常断开,或服务器主动断开客户端时才会触发。客户端因为断电、死机、线路问题等异常原因断开的情况下是无法触发此事件的。所以需要使用心跳包机制。

3. OnExeCute:收到客户端数据事件

4. OnException:客户端连接异常事件

标签:DelphiIndy

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=54