同一账号同一时间内只允许登录一次,如果当前账号已经登录了,那么第二个人再登录的时候则要提示“账号登录中”,并且不允许第二人登录进入,请问这样要怎么做,谢谢?
在服务器端用集合保存已经登录的账号, 每次登录的时候,检查是否存在,如果已经登录,直接返回登录失败 账号登录中
在MyGameServer中
//已登陆的客户端
public List<ClientPeer> login_peerList = new List<ClientPeer>();
在LoginHandler中
if (MyGameServer.Instance.login_peerList.Count == 0)
{
if (isSuccess)
{
response.ReturnCode = (short)ReturnCode.Success;
peer.username = userName;
MyGameServer.Instance.login_peerList.Add(peer);
}
else
{
response.ReturnCode = (short)ReturnCode.Failed;
}
peer.SendOperationResponse(response, sendParameters);
}
foreach (ClientPeer tempPeer in MyGameServer.Instance.login_peerList)
{
if (tempPeer.username != userName) {
if (isSuccess)
{
response.ReturnCode = (short)ReturnCode.Success;
peer.username = userName;
MyGameServer.Instance.login_peerList.Add(peer);
}
else
{
response.ReturnCode = (short)ReturnCode.Failed;
}
peer.SendOperationResponse(response, sendParameters);
}
}
然而在PohtonServer 的log中显示
Exception:System.InvalidOperationException: 集合已修改;可能无法执行枚举操作。
在 System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
在 System.Collections.Generic.List`1.Enumerator.MoveNextRare()
同一账号同一时间还是能重复登陆,请问这里哪里错了?