SendData(frd, msg); break;
caseMsgCommand.Registering: Data RegistSQL = newData();
if (RegistSQL.RegistExSQL(msg) == 1) {
msg.msgCommand = MsgCommand.Registered; }
SendData(frd, msg); break;
caseMsgCommand.Mymsggeting: Data MymsgSQL = newData(); //获取并发送用户信息
ClassMessage msgG = MymsgSQL.GetmymsgExSQL(msg); msgG.msgCommand = MsgCommand.Mymsggot; SendData(frd, msgG); break;
caseMsgCommand.FriendList: Data FriListSQL = newData(); int count = 0; SqlDataReader sdr;
FriendMsg frimsg = newFriendMsg();
string[] FriendID = FriListSQL.GetfriendsExSQL(msg, out count); for (int i = 0; i < count; i++) {
sdr = FriListSQL.GetfriMsgExSQL(FriendID[i], 0); sdr.Read(); if (sdr[0] != DBNull.Value)
frimsg.Face = (byte[])sdr[0]; else frimsg.Face = null;
frimsg.UserName = sdr[1].ToString(); //发送好友信息给客户端
msg.Data = newClassSerializers().SerializeBinary(frimsg).ToArray(); msg.msgCommand = MsgCommand.FriendList; //获取验证消息
SendData(frd, msg); }
//通知客户端好友信息已查询完
msg = newClassMessage(); SendData(frd, msg); break;
caseMsgCommand.Frimsggeting: Data FriMsgSQL = newData(); //获取好友信息并发送
13
SqlDataReader sdr1 = FriMsgSQL.GetfriMsgExSQL(msg.UserName, 1); if(sdr1.Read()) {
if (sdr1[0] != DBNull.Value)
msg.Face = (byte[])sdr1[0]; else msg.Face = null;
msg.msgCommand = MsgCommand.Frimsggot; }
SendData(frd, msg); break;
caseMsgCommand.UpdateState: Data AddFriSQl = newData();
int state = AddFriSQl.AddFrinedExSQL(msg); if (state == 1) {
msg.msgCommand = MsgCommand.UpdateState; } elseif (state == 2) {
msg.msgCommand = MsgCommand.None; } else
{
msg.msgCommand = MsgCommand.Close; }
SendData(frd, msg); break;
caseMsgCommand.FriendDeleting: Data DeleteSQL = newData();
if (DeleteSQL.DeleteExSQL(msg) == 1) {
msg.msgCommand = MsgCommand.FriendDeleted; }
SendData(frd, msg); break;
caseMsgCommand.SendToOne:
SendDataTo(frd, msg); break; default:
MessageBox.Show(\); break; }
14
}
//发送反馈消息给当前客户端
privatevoid SendData(MyFriend frd, ClassMessage msg) { try {
byte[] data = newClassSerializers().SerializeBinary(msg).ToArray(); AsyncCallback callback = newAsyncCallback(SendCallback); //发送响应消息给客户端
frd.socket.BeginSend(data, 0, data.Length, SocketFlags.None, callback, frd); string data1 = string.Format(\:{0}\, frd.socket.RemoteEndPoint.ToString()); lstBox1.Invoke(AppendString, data1); } catch {
lstBoxStatu.Invoke(Removefriend, frd); } }
//发送聊天信息给在线客户端
privatevoid SendDataTo(MyFriend frd, ClassMessage msg) { try {
//对每一个侦听的客户端端口信息进行发送操作 for (int i = 0; i < ClientNum; i++) {
if (ClientSocket[i] != null&& ClientSocket[i] != frd.socket) { //回发数据到客户端
ClientSocket[i].Send(newClassSerializers().SerializeBinary(msg).ToArray()); } } }
catch(Exception ex) {
MessageBox.Show(ex.Message); } }
//点击结束按钮的响应函数
privatevoid btnStop_Click(object sender, EventArgs e) {
if (!IsStart) return; listener.Stop();
15
IsStart = false;
lstBox1.Invoke(AppendString, \已经结束了服务器的侦听!\); btnStop.Enabled = true; btnStart.Enabled = true; }
b.数据库操作控件(Data控件):
publicint LoginExSQL(LoginMsg msg, string remoteEndPoint) { try {
SqlConnection cnn = newSqlConnection(ConStr); cnn.Open();
//执行登录信息查询操作,验证登录信息并返回信息以允许/拒绝登录 if (cnn.State == ConnectionState.Open) {
SqlCommand cmd = newSqlCommand(\ + msg.UserName + \, cnn);
SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read();
if (string.Compare(sdr[0].ToString(), msg.PassWord) == 0) return 1; }
//关闭数据库并清理所占用资源 cnn.Dispose(); return 0; }
catch (Exception ex) {
MessageBox.Show(ex.Message); return 0; } }
publicint RegistExSQL(ClassMessage msg) { try {
SqlConnection cnn = newSqlConnection(ConStr); cnn.Open();
//执行注册操作,验证注册信息并返回注册结果 if (cnn.State == ConnectionState.Open) {
SqlCommand cmd = newSqlCommand(\
\+msg.UserName+\+msg.PassWord+\+msg.Sex+\+msg.Age, cnn);
16
//执行有关插入存储过程,若插入成功(受影响行数为1),返回1 if (cmd.ExecuteNonQuery() == 1) return 1; }
//关闭数据库并清理所占用资源 cnn.Dispose(); return 0; }
catch (Exception ex) {
MessageBox.Show(ex.Message); return 0; } }
publicClassMessage GetmymsgExSQL(ClassMessage msg) { try {
SqlConnection cnn = newSqlConnection(ConStr); cnn.Open();
//执行用户信息查询操作,返回用户信息 if (cnn.State == ConnectionState.Open) {
SqlCommand cmd = newSqlCommand(\UserName='\+msg.UserName+\, cnn); SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); if (sdr[0] != DBNull.Value)
msg.Face = (byte[])sdr[0]; else msg.Face = null;
msg.Sign = (int)sdr[1]; return msg; }
//关闭数据库并清理所占用资源 cnn.Dispose(); returnnull; }
catch (Exception ex) {
MessageBox.Show(ex.Message); returnnull; } }
publicstring[] GetfriendsExSQL(ClassMessage msg, outint count)
17