public void startup()
{
_tcpl.Start(100);
aTimer.Elapsed += new ElapsedEventHandler(ping);
aTimer.Interval = 5000;
aTimer.Enabled = true;
try
{
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
try
{
string[] info = s.Split();
_client_password.Add(info[0], info[1]);
}
catch { }
}
}
}
catch
{
FileStream fs = new FileStream(path, FileMode.Create);
fs.Close();
}
Thread cmdthr = new Thread(new ThreadStart(cmdThread));
cmdthr.Start();
while (true)
{
TcpClient clientcp = _tcpl.AcceptTcpClient();
NetworkStream nets = clientcp.GetStream();
IFormatter formatter = new BinaryFormatter();
packet logindata = (packet)formatter.Deserialize(nets);
string userpass = _client_password[logindata.Name] as string;
mutTable.WaitOne();
if (_client_table.ContainsKey(logindata.Name) == true) // username has already existed
{
mutTable.ReleaseMutex();
packet error = new packet("e", null, null, -1,0,0,false);
formatter.Serialize(nets, error);
clientcp.Close();
}
else if (_client_password.ContainsKey(logindata.Name) == true && userpass != logindata.Msg)
{
packet mistake = new packet("m", null, null, -1,0,0,false);
formatter.Serialize(nets, mistake);
clientcp.Close();
}
else
{
_client_table.Add(logindata.Name, clientcp);
availableusers.Add(logindata.Name);
mutTable.ReleaseMutex();
mutpac.WaitOne();
packetQ.Enqueue(logindata);
mutpac.ReleaseMutex();
}
}
}