D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-10 #1 C/S架构下,如何判断帐号已经登陆,如果该帐号已经登陆,那么将不允许其他机器通过该帐号登陆,请问各位如何解决该问题?用Com吗? 多谢各位了!不好意思只有这么多分了.
D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-10 #2 C/S架构下,如何判断帐号已经登陆,如果该帐号已经登陆,那么将不允许其他机器通过该帐号登陆,请问各位如何解决该问题?用Com吗? 多谢各位了!不好意思只有这么多分了.
D dcsdcs Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-11 #4 三层,中间层记录变量。c/s就采用数据库处理了。加一个表格,定时刷新。
S skyccf Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-11 #5 c登录时s端记录该c以登录,其他c再登陆时先到s里保存的已登陆的c用户表里找,如果没有允许登陆,否则kill
D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-11 #6 to dcsdcs:可否说具体些,我现在很急阿,分不够 的话,我可以另外开贴 to skyccf 谢谢你的回答,这样解决的可行性是有的,但是是否便于管理呢,拓展性是否高呢?如果我想查看当前的登陆帐号数量呢?
to dcsdcs:可否说具体些,我现在很急阿,分不够 的话,我可以另外开贴 to skyccf 谢谢你的回答,这样解决的可行性是有的,但是是否便于管理呢,拓展性是否高呢?如果我想查看当前的登陆帐号数量呢?
D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-11 #7 to skyccf:现在还有个问题,那就是如果死机,那么你的表怎么写啊
Z zjhjp Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-11 #8 当client登录时,在server用数据库记录登录信息,当又有client从其它地方登录时,先到服务器端查看当前账号是否已经登录,如果没有登录,就允许登录,如果已经登录,就将原Client下线,允许新的客户端账号登录(也不一定是这样处理,看你具体的要求了).服务器端设一个timer,定时判断当前用户是否还在线,就是给客户端发送信息,并从客户端收到信息.如果客户端不能正常返回信息,可以认为客户端已经掉线了(或死机了).可以将此账号的登录信息删除.至于想看当前登录的用户数量,那就很简单了,直接从服务器端表中统计就行了.
当client登录时,在server用数据库记录登录信息,当又有client从其它地方登录时,先到服务器端查看当前账号是否已经登录,如果没有登录,就允许登录,如果已经登录,就将原Client下线,允许新的客户端账号登录(也不一定是这样处理,看你具体的要求了).服务器端设一个timer,定时判断当前用户是否还在线,就是给客户端发送信息,并从客户端收到信息.如果客户端不能正常返回信息,可以认为客户端已经掉线了(或死机了).可以将此账号的登录信息删除.至于想看当前登录的用户数量,那就很简单了,直接从服务器端表中统计就行了.
D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-12 #9 to zjhjp:"服务器端设一个timer,定时判断当前用户是否还在线,就是给客户端发送信息,并从客户端收到信息.如果客户端不能正常返回信息,可以认为客户端已经掉线了(或死机了)." 1、这个可不可以用socket做啊?或者用COM,是不是控制的更好些,因为我现在的要求还不是很明朗,可能还要改. 2、还有个问题,为了数据的安全性,我要定期修改数据库的密码,在前台如何作啊? 谢谢了,感觉自身太差了,麻烦各位了
to zjhjp:"服务器端设一个timer,定时判断当前用户是否还在线,就是给客户端发送信息,并从客户端收到信息.如果客户端不能正常返回信息,可以认为客户端已经掉线了(或死机了)." 1、这个可不可以用socket做啊?或者用COM,是不是控制的更好些,因为我现在的要求还不是很明朗,可能还要改. 2、还有个问题,为了数据的安全性,我要定期修改数据库的密码,在前台如何作啊? 谢谢了,感觉自身太差了,麻烦各位了
W wx-ham Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-24 #10 可以考虑做三层,你的中间服务器做为数据转发服务器也可,做为登录服务器也可。 一般情况下,做为登录服务器,如果用户登录了,则将用户信息记录下来,对应的可以有如下的结构:用户的标识位,SOCKET的套接字号。 如果在登陆的时候发现该用户已经登录,则关闭该用户的连接。 一般的如果正常情况下,用户下线是可以收到消息的,这时候该用户的资源释放掉。 对于断电、断网等特别情况,你可以加一些处理。例如:你的用户数如果不是很多的话,可以定时向用户发送确认侦,如果用户有回的,则该用户在线,如果用户连续三次没有回的,则释放该资源。如果你的用户数很多,你可以再加一个标识位:MAYBELOST,如果有数据在发送的时候失败,将该位设成TRUE,定时向该位为TRUE的用户发送确认侦,如果收到用户的确认侦则将该位设为FALSE。 以上只是我的想法,如果有人有更好的想法,希望能提出来,大家一起交流一下。
可以考虑做三层,你的中间服务器做为数据转发服务器也可,做为登录服务器也可。 一般情况下,做为登录服务器,如果用户登录了,则将用户信息记录下来,对应的可以有如下的结构:用户的标识位,SOCKET的套接字号。 如果在登陆的时候发现该用户已经登录,则关闭该用户的连接。 一般的如果正常情况下,用户下线是可以收到消息的,这时候该用户的资源释放掉。 对于断电、断网等特别情况,你可以加一些处理。例如:你的用户数如果不是很多的话,可以定时向用户发送确认侦,如果用户有回的,则该用户在线,如果用户连续三次没有回的,则释放该资源。如果你的用户数很多,你可以再加一个标识位:MAYBELOST,如果有数据在发送的时候失败,将该位设成TRUE,定时向该位为TRUE的用户发送确认侦,如果收到用户的确认侦则将该位设为FALSE。 以上只是我的想法,如果有人有更好的想法,希望能提出来,大家一起交流一下。
G goddy Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-24 #11 做一个已登录表志 定时刷新,一定时间内客户端没有刷新,那就是他下线了
D delphisuccess Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-24 #12 做一个已登录表志主鍵 具體思路: a.當用戶正常登錄時登給服務端作已經登錄的標志 如:unlogin=1(表示登錄)unlogin=0(表示未登錄) b.客戶端退出後,及時更新unlogin=0 c.異常情況處理可以附加socket來實現實時監控客戶登錄情況來處理。
做一个已登录表志主鍵 具體思路: a.當用戶正常登錄時登給服務端作已經登錄的標志 如:unlogin=1(表示登錄)unlogin=0(表示未登錄) b.客戶端退出後,及時更新unlogin=0 c.異常情況處理可以附加socket來實現實時監控客戶登錄情況來處理。
D ddzhouqian Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-28 #13 已经很长没登陆大富翁了,刚换了家单位,不给上网,没能及时回贴,不好意思了! 通过上面各位的回答,小弟在思路已经有了初步的方向,想通过socket对异常进行控制,可否提供部分代码,多谢各位了!事后肯定另外开贴给分的!拜托了啊!
已经很长没登陆大富翁了,刚换了家单位,不给上网,没能及时回贴,不好意思了! 通过上面各位的回答,小弟在思路已经有了初步的方向,想通过socket对异常进行控制,可否提供部分代码,多谢各位了!事后肯定另外开贴给分的!拜托了啊!
S skyccf Unregistered / Unconfirmed GUEST, unregistred user! 2005-12-07 #14 s可以定时发链路测试包如果正常收到回应说明ok,否则(异常、超时连不通)说明c已下线 从表中删之。 你可以把表设计成如下格式(仅供参考) |user |IP |port |activetime |.....(other info you needed) | activetime记录c最近活动(c发信息或s发测试包c的回应都算)的时间,定时刷新的时候如果时间差过长(比如30sec)就删之,允许其他登陆
s可以定时发链路测试包如果正常收到回应说明ok,否则(异常、超时连不通)说明c已下线 从表中删之。 你可以把表设计成如下格式(仅供参考) |user |IP |port |activetime |.....(other info you needed) | activetime记录c最近活动(c发信息或s发测试包c的回应都算)的时间,定时刷新的时候如果时间差过长(比如30sec)就删之,允许其他登陆
H hzm7512 Unregistered / Unconfirmed GUEST, unregistred user! 2005-12-07 #16 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3285852 你可以参考一下上面关于异常退出的处理. 另外,socket有异常出错的error值相对应的出错说明,你可以上网查一下.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3285852 你可以参考一下上面关于异常退出的处理. 另外,socket有异常出错的error值相对应的出错说明,你可以上网查一下.