三层,如何取得即时在线的客户端IP,用户名等客户资料? ( 积分: 100 )

  • 主题发起人 ppqingyu
  • 开始时间
P

ppqingyu

Unregistered / Unconfirmed
GUEST, unregistred user!
三层,如何取得即时在线的客户端IP,用户名等客户资料?(新手)
目的的是管理员知道当前在线的有多少个客户端,如果有某些客户端退出,就算是异常退出,服务器端也能够知道,服务器端如何能够随时断开某一客户端连接?(在服务器应用程序中实现)
 
楼主的这个系统感觉像电信系统中的认证系统的一部分
 
不是的,我刚学三层,我想这个功能在交给客户的时间,应该是基本的功能吧?要不服务器端根本就不能控制.可是我在网上找的资料很少,所以有请你们这些高手了.
 
在应用服务器上开socket监听,行不?客户端一运行就将你要的东西传上来!
 
可以用三層的方法。
 
客户运行时到服务器注册. 并传入客户端IP,用户名
客户端退出时注销.
服务器根据IP进行监听. 监听失败表示客户端已异常中止.
 
前两条还可以,
最后一项怎么处理?
 
一样啊, 服务端断开时删除客户信息. 客户执行功能时首先判断是否注册, 没有注册执行不了.断开时向客户端发送断开消息, 客户端响应提示就可以了
 
服务器可以向客户端发送断开消息?
客户端发生异常而退出,它怎么通知服务器?
 
客户端异常退出是由服务端通过socket与客户端通信发送消息实现的.如果发送失败, 客户端就异常退出了.
 
客户端也是WIN32程序呀,它也会因自力的原因而出错退出呀
 
无忧站网络——专业提供虚拟主机、域名注册、网页制作、LOGO制作、网站推广等服务。
更多空间详情请登陆 http://www.51zhan.com
 
我是意思是服务器定时向客户端发送消息, 发送失败就表示客户端就已经异常退出了
 
给我一个例子吧,如何向客户端发消息?
 
客户定时向服务端发送心跳包,发送当前状态
当服务端超过时间没有接收到表示客户端掉线
 
这样会不会不占用资源了?
还有,给个实现的例子吧.
 
共同学习,帮你顶顶顶!
 
ppqingyu, 时间:2007-1-16 11:24:00, ID:3659672 [显示:小字体 | 大字体]
三层,如何取得即时在线的客户端IP,用户名等客户资料?(新手)
目的的是管理员知道当前在线的有多少个客户端,如果有某些客户端退出,就算是异常退出,服务器端也能够知道,服务器端如何能够随时断开某一客户端连接?(在服务器应用程序中实现)

回复:
在中间层生成session列表,登记每一个客户端的SOCKET, 一有accept, 可取出IP,PORT,写入session中. 客户端和服务器用心跳函数保持存活状态. 如果想断开客户端,可在界面上生成客户列表, 选中列表时,对应session结构列表, 然后closesocket(session.socket)就行了.
 
to wu_yanan2003:我是用ADO,不是BDE
 
ADO,你可以在服务端写一个方法,在客户端连接时候就调用这个方法,然后把客户的IP等资料通过该方法提交给服务端,服务端再做处理,比如填充到一个表格控件里去.至于保存活状态的心跳函数,说白了,也就是每隔多少时间,只要该客户端还在,就再提交一次给服务端,以示确认,服务端可以写超时方法,多少时间没有上线的算超时,将它清理掉~
这是我的理解,请楼主惦量
 
顶部