我正在用C#编写游戏服务器,每次有人用他的用户名发送登录消息时,我将他添加到ID为IPENDPOINT,USERNAME的元组列表中。 我想检查客户端是否与已连接的客户端没有相同的用户名,所以我试图循环访问列表并获取list.Item3'这是用户名',并使用String.Equals(list.Item3,username)检查用户名是否存在。 我的问题是当我循环,我的代码只比较列表中的第一个元组,如果它是真的,然后发送错误消息,如果没有,然后发送接受消息,当列表有+1客户端它只比较第一个也接受即使元组2或3 ...具有该用户名。 我尝试过很多办法,这是最后的代码,我想:循环遍历列表元组并添加(如果不匹配)
for (int i = 0; i < clientsInfoList.Count; i++)
{
bool isUsed;
if (String.Equals(clientsInfoList[i].Item3, Username))
{
isUsed = true;
}
if (isUsed)
{
Console.WriteLine("Username is already used!");
udpServer.Send(Encoding.ASCII.GetBytes("REFUSED"), Encoding.ASCII.GetByteCount("REFUSED"), remoteEP);
break;
}
else if(!isUsed)
{
clientsInfoList.Add(new Tuple<int, IPEndPoint, string>(id, remoteEP, Username));
Console.WriteLine("Username has been added to the list :)");
udpServer.Send(Encoding.ASCII.GetBytes("ACCEPTED"), Encoding.ASCII.GetByteCount("ACCEPTED"), remoteEP);
}
}
我试过很多其他方法,但我不能获得验证。 在此先感谢。
我试过你的解决方案,但我得到:使用未分配的局部变量'isUsed' – Adam 2015-03-08 21:09:31
我改变了'布尔isUsed'到'bool isUsed = false;'。试试看,并告诉我它是否有效。 – Szab 2015-03-08 21:11:30
'isUsed'仍然只会告诉我们,如果* *最后在'项目<>'使用该名称。无论用户看到什么用户名,循环都会继续。 – 2015-03-08 21:14:31