DIOCP之获取在线用户列表

通过获取tcpserver.getonlinecontextlist来得到在线列表

procedure TfrmMain.btn_refreshClick(Sender: TObject);
var
lvList:TList;
i: Integer;
lvClient:TMyClientContext;
lvItem:TListItem;
begin
lstClientINfo.Items.Clear;
lvList:=TList.Create;
try
FTcpServer.getOnlineContextList(lvList);
for i := 0 to lvList.Count - 1 do
begin
lvClient := TMyClientContext(lvList[i]);
lvItem := lstClientINfo.Items.Add;
lvItem.Caption :=IntToStr(i+1);
try
lvItem.SubItems.Add(TChatSession(lvClient.Data).UserID);
except on E: Exception do
lvItem.SubItems.Add(‘未登录‘);
end;
try
lvItem.SubItems.Add(TChatSession(lvClient.Data).UserMac);
except on E: Exception do
lvItem.SubItems.Add(‘未知‘);
end;
// lvItem.SubItems.Add(‘‘);
lvItem.SubItems.Add(lvClient.RemoteAddr);
lvItem.SubItems.Add(IntToStr(lvClient.RemotePort));
// if TChatSession(lvClient.Data).UserID<>‘‘ then
//
// lvItem.SubItems.Add(TChatSession(lvClient.Data).UserID)
// else
// lvItem.SubItems.Add(‘‘);
lvItem.SubItems.Add(IntToStr(lvClient.SocketHandle));
lvItem.SubItems.Add(lvClient.StateINfo);
end;

finally
lvList.Free;
end;
end;

时间: 2024-08-01 21:48:07

DIOCP之获取在线用户列表的相关文章

基于Redis的在线用户列表解决方案

前言: 由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能: 在单机环境下,在线列表的实现方案可以采用SessionListener来完成,当有Session创建和销毁的时候做相应的操作即可完成功能及将相应的Session的引用存放于内存中,由于持有了所有的Session的引用,故可以方便的实现用户单一登陆的功能(比如在第二次登陆的时候使之前登陆的账户所在的Session失效). 而在集群环境下,由于用户的请求可能分布在不同的Web服

在线用户列表

[转载]Asp.Net在线用户列表的開發匯總 这是转载的别人的一篇,解决了困扰我已久的问题,虽然文章里少了两张图,但是不影响阅读. 1.在线用户列表的实现在ASP时代,要实现一个网站的在线用户列表显示功能的惯用做法是修改global.asa文件中的:Application_Start.Session_Start和Session_End这三个函数.在ASP.NET时代,我依然这样做.但是必须注意很多问题.首先来看看最简单的代码实现: protected void Application_Start

获取微信用户列表Openid

/**     * 获取微信用户列表Openid     *      * @param nextOpenid     * @return     */    public static JSONArray getWechatUserOpenIds(String nextOpenid) {        // 获取微信用户openid的json数组        JSONArray openIdArry = null;        // 获取微信的access_token凭证        S

【Listener】利用监听器Listener以MVC的思想通过JSP+Servlet+JDBC完成在线用户列表的输出

Servlet,监听器Listener与<[Filter]拦截器Filter>(点击打开链接)是JSP的三大核心组件,实际上监听器Listener相当于数据库里面的触发器,一旦用户触发了某种行为,则可以通过相关的Java文件执行相应的程序.用户在浏览网页的过程中,主要有打开浏览器的动作,对应的行为是Session的创建,可是,用户关闭浏览器的动作,并不是对应Session的消失,因此对于Session的消失我们意义不大:访问任意网页的动作,对应的行为是request请求的创建,request的

SharedObject使用:在FluorineFx.net与Flex中使用共享对象维护在线用户列表实例【转】

一.添加一个新的FluorineFx的服务类项目OnLineService,删除原有的Sample.cs,并添加一个用户类定义与一个ApplicationAdpater类:如下: /*-- User.cs --*/ namespace OnLineService { public class User { public string UserName { get; set; } public string UserPsw { get; set; } } } /* --  ApplicationA

关于使用HttpSessionBindingListener获取在线用户数,同一用户登陆一次

原创地址:http://blog.csdn.net/jiaoxueli/article/details/2226134 考虑到项目中统计在线用户数量和同一用户只能登陆一次的需求,查询联系 HttpSessionBindingListener接口的使用,记录以备后用,也供同样需要的同仁参考. 下面为我的测试例子,首先建个web工程,例子中程序包括:OnLineUser.java  ,login.jsp ,logout.jsp,onLineUser.jsp四个文件 OnLineUser.java清单

Servlet监听器及在线用户

Servlet中的监听器分为三种类型Ⅰ 监听ServletContext.Request.Session作用域的创建和销毁 (1)ServletContextListener (2)HttpSessionListener (3)ServletRequestListenerⅡ 监听ServletContext.Request.Session作用域中属性变化(增加.修改.删除) (1)ServletContextAttributeListener (2)HttpSessionAttributeLis

C#开发微信门户及应用(4)--关注用户列表及详细信息管理

在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发. 微信的很重要的一个特点就是能够利用其平台庞大的用户群体,因此很容易整合在CRM(客户关系管理)系统里面,服务号和订阅好都能够向关注者推送相关的产品消息,还能和48小时内响应消息和事件的活跃用户进行交互对话,因此用户信息是微信API里面非常重要的一环,本随笔主要介绍获取关

Javaweb基础---&gt;利用监听器统计在线用户数量和用户信息

首页布局:index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <%@ page import="com.hanqi.model.*" %> <!DOCTYPE