在事例里TMyClientContext多处用到了self操作,或者Self.WriteObject(pvObject)操作,最开始不太明白,实际上是服务端在运行时注册了客户端类如下
FTcpServer.RegisterContextClass(TMyClientContext); // 注册客户端Context
那么程序在接收到消息时,会创建一个客户端的类TMyClientContext,在此类下执行的函数。调用的变量实际就是TIOCPCoderClientContext,而SELF则代表此次连接客户端,
而通过SELF调用客户端连接类的事件属性等操作。
注意:在通过处理客户端时DoContextAction事件时,在此次操作内可以使用self方式直接操作,但一个客户端向另一个客户端操作时,则self代码的是第一个客户端,另一个客户端可以通过会话,或者以下的循环方侧得到
Self.Owner.GetOnlineContextList(lvList);
for i := 0 to lvList.Count - 1 do
begin
lvContext := TIOCPCoderClientContext(lvList[i]);
if lvContext <> Self then
begin
//这里面的Self指的是这次向服务器发送信息的客户端,而LVCONTEXT则是遍历服务器当前记录已经连接的客户端
lvContext.RemoteAddr ;//获得IP
end;
当前也可以通过指的客户端键和会话获取
现在是TIOCPCoderClientContext的基本操作
一、获得信息
1》客户端IP
self.RemoteAddr;
2》端口
self.RemoteAddr;
使用的是通讯框架下面地址
https://download.csdn.net/download/z123191456/11021119
里面的diocp-v5-master\samples\ChatDEMO By 彩蛋 DEMO进行的学习。