我正在研究基于局域网的办公室间消息传递系统。
我的应用程序中的步骤是:
- 服务器启动并监听客户端
- 连接上的客户端获取所有其他已连接客户端的视图。
- 在连接到服务器时,我会在数据库中检查该客户端是否被授权。
- 如果我没有在客户端连接到服务器时检查数据库,那么应用程序确实可以正常工作,否则客户端如果数据库中不存在客户端应用程序就关闭了。
相关代码在这里:
public void CheckUserName(string userName)
{
if (userName != "Usman") // checking in database( a static name)
{
//Check if the username is registered
Send("sorry@Invalid Username, try another Username!!");
Disconnect();
return;
}
else
{
//If name is not duplicate then the client is connected
this.connected =true;
this.userName =userName;
//Build the Usernames list and send it to the client
StringBuilder userList = new StringBuilder();
userList.Append(this.clientID);
Hashtable clientTable =ClientList.GetList;
foreach(DictionaryEntry d in clientTable)
{
//Seperate the usernames by a '@'
userList.Append("@");
userList.Append(d.Value.ToString());
}
//Start the llistening
lock(myClient.GetStream())
{
AsyncCallback GetStreamMsgCallback = new AsyncCallback(GetStreamMsg);
myClient.GetStream().BeginRead(recByte,0,1024,GetStreamMsgCallback,null);
}
//Send the Userlist
Send(userList.ToString());
//Raise the Connected Event
if(Connected!=null)
{
EventArgs e = new EventArgs();
Connected(this, e);
}
}
}
有谁可以建议如何摆脱这件坏事?