我的程序实现期望是这样的:启动应用程序后传入用户名检测该用户是否已经登陆 应用情景详细说明:用户A启动应用程序x,登陆,使用应用程序x;用户B启动应用程序x,登陆,使用应用程序x;用户A启动应用程序x,登陆,检测到A已经登陆,弹出框通知.退出;我的不成立的构想:用户启动应用程序登陆成功后,在一个指定路径指定文件中写入登陆记录(包含用户名\登陆状态:已登陆);用户退出应用程序时,更改登陆记录(包含用户名\登陆状态:未登陆);当此用户再次启动此应用程序的时候,读取指定路径指定文件中的登陆记录,如果用户的登陆状态是已登陆,弹框通知.这个方法的缺陷是如果遇到停电等非正常退出,用户登陆记录中的登陆状态还是已登陆,这时如果用户再次登陆就会被弹框通知. 还有使用单身模式也不太适合.请教各位高手指导一个实现方法,可以不必写代码,只需实现思路即可.谢谢!

解决方案 »

  1.   

    猜测
     和QQ类似,一个帐号只能同时登陆一次,因为早期QQ是可以一个帐号在不同的电脑上登陆多个的网路程序使用 ip和端口作为 标识网络程序的方式。登陆的时候,使用帐号密码,连接服务器,服务器返回一个GUID,标识该登陆用户,将GUID保存在程序里。
    一定间隔时间,程序使用该guid和服务器联络一次,表明我在线。超过一定时间未联系的guid会被服务器废弃,返回消息给客户端,通知未登录,需要输入帐号密码。
    当客户端登陆的时候,如果该帐号已经登陆了,而且ip+端口和正在请求登陆该帐号的ip+端口不一致,通知该程序,该帐号已经登陆,请换帐号。单身模式没听过,是不是还有娶媳妇模式
      

  2.   

    另外我在msdn英文版问了同样的问题,其中一位的解决方案也很好,http://social.msdn.microsoft.com/Forums/zh-CN/csharpgeneral/thread/c9d274ba-f684-4956-a161-89d6858a84d0还有,我在百度知道上也问了同样的问题,一种一位的解决方法也有参考价值,http://zhidao.baidu.com/question/160714229.html谢谢各位的回答!