📄 f_server.cs
字号:
UpdateUserList(msg, Ip, Port);
}
/// <summary>
/// 插入用户
/// </summary>
/// <param name="msg"></param>
/// <param name="Ip"></param>
/// <param name="Port"></param>
/// <returns></returns>
private ClassMsg InsertUser(ClassMsg msg, System.Net.IPAddress Ip, int Port)
{
RegisterMsg registermsg = (RegisterMsg)new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data));
ClassOptionData OptionData = new ClassOptionData();
MsgCommand Sate = msg.msgCommand;
String UserName = registermsg.UserName; //注册用户的名称
String PassWord = registermsg.PassWord;//注册用户的密码
String vIP = Ip.ToString();//注册用户的IP地址
//向数据表中添加注册信息
OptionData.ExSQL("insert into tb_CurreneyUser (IP,Port,Name,PassWord,Sign) values ('" + vIP + "'," +
Port.ToString() + ",'" + UserName + "','" + PassWord + "'," + Convert.ToString((int)(MsgCommand.Registered)) + ")");
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser");
UpdateUser();//更新用户列表
OptionData.Dispose();
msg.msgCommand = MsgCommand.Registered;//用户注册结束命令
SendMsgToOne(Ip,Port,msg);//将注册命令返回给注册用户
return msg;
}
private void Form1_Load(object sender, EventArgs e)
{
UpdateUser();//加载用户列表
//udpSocket1.Active = true;
}
/// <summary>
/// 更新用户列表
/// </summary>
private void UpdateUser()
{
ClassOptionData OptionData = new ClassOptionData();
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser");
LV_SysUser.Items.Clear();
while (DataReader.Read())
{
ListViewItem listItem = new ListViewItem();
listItem.Text = Convert.ToString(DataReader.GetInt32(0));
listItem.SubItems.Add(DataReader.GetString(1));
listItem.SubItems.Add(Convert.ToString(DataReader.GetInt32(2)));
listItem.SubItems.Add(DataReader.GetString(3));
listItem.SubItems.Add(Convert.ToString(DataReader.GetInt32(5)));
LV_SysUser.Items.Add(listItem);
}
OptionData.Dispose();
}
private void F_Server_FormClosed(object sender, FormClosedEventArgs e)
{
udpSocket1.Active = false;
ClassOptionData OptionData = new ClassOptionData();
OptionData.ExSQL("Update tb_CurreneyUser Set Sign =12 Where ID >0");
OptionData.Dispose();
}
private void udpSocket1_DataArrival(byte[] Data, IPAddress Ip, int Port)
{
DataArrivaldelegate outdelegate = new DataArrivaldelegate(DataEvent);
this.BeginInvoke(outdelegate, new object[] { Data, Ip, Port });
}
private void DataEvent(byte[] Data, System.Net.IPAddress Ip, int Port)
{
//MessageBox.Show(Encoding.Unicode.GetString(Data));
//this.Text = Encoding.Unicode.GetString(Data);
//MessageBox.Show(this.Text);
}
/// <summary>
/// 发送用户信息
/// </summary>
/// <param name="msg"></param>
/// <param name="Ip"></param>
/// <param name="Port"></param>
private void SendUserList(ClassMsg msg, System.Net.IPAddress Ip, int Port)
{
ClassUsers Users = new ClassUsers();
ClassOptionData OptionData = new ClassOptionData();
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser");
while (DataReader.Read())
{
ClassUserInfo UserItem = new ClassUserInfo();
UserItem.UserID = Convert.ToString(DataReader.GetInt32(0));
UserItem.UserIP = DataReader.GetString(1);
UserItem.UserPort = Convert.ToString(DataReader.GetInt32(2));
UserItem.UserName = DataReader.GetString(3);
UserItem.State = Convert.ToString(DataReader.GetInt32(5));
Users.add(UserItem);
}
OptionData.Dispose();
msg.Data = new ClassSerializers().SerializeBinary(Users).ToArray();
udpSocket1.Send(Ip,Port,new ClassSerializers().SerializeBinary(msg).ToArray());
}
private void UpdateUserList(ClassMsg msg, System.Net.IPAddress Ip, int Port)
{
ClassUsers Users = new ClassUsers();
ClassOptionData OptionData = new ClassOptionData();
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser");//查找所有注册的用户信息
while (DataReader.Read())//遍历所有用户
{
ClassUserInfo UserItem = new ClassUserInfo();//创建并引用ClassUserInfo类
UserItem.UserID = Convert.ToString(DataReader.GetInt32(0));//记录用户用编号
UserItem.UserIP = DataReader.GetString(1);//记录用户的IP地址
UserItem.UserPort = Convert.ToString(DataReader.GetInt32(2));//记录端口号
UserItem.UserName = DataReader.GetString(3);//记录用户名称
UserItem.State = Convert.ToString(DataReader.GetInt32(5));//记录当前状态
Users.add(UserItem);//将单用户信息添加到用户列表中
}
msg.Data = new ClassSerializers().SerializeBinary(Users).ToArray();//将用户列表写入到二进制流中
//查找当前已上线的用户
DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser Where Sign = "+ MsgCommand.Logined);
while (DataReader.Read())//向所有上线用户发送用户列表
{
udpSocket1.Send(IPAddress.Parse(DataReader.GetString(1)), DataReader.GetInt32(2), new ClassSerializers().SerializeBinary(msg).ToArray());
}
OptionData.Dispose();
}
private void SendUserMsg(ClassMsg msg, System.Net.IPAddress Ip, int Port)
{
ClassOptionData OptionData = new ClassOptionData();
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser Where ID = " + msg.RID);
DataReader.Read();
string ip = DataReader.GetString(1);
int port = DataReader.GetInt32(2);
udpSocket1.Send(IPAddress.Parse(ip), port, new ClassSerializers().SerializeBinary(msg).ToArray());
OptionData.Dispose();
DataReader.Dispose();
}
/// <summary>
/// 更新用户在线状态
/// </summary>
/// <param name="msg"></param>
/// <param name="Ip"></param>
/// <param name="Port"></param>
private void UpdateUserState(ClassMsg msg, System.Net.IPAddress Ip, int Port)
{
ClassOptionData OptionData = new ClassOptionData();
OptionData.ExSQL("Update tb_CurreneyUser Set Sign = " + Convert.ToString((int)(msg.msgCommand))+ " Where ID = "+ msg.SID);
SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser Where Sign = " + Convert.ToString((int)(MsgCommand.Logined)));
if (msg.msgCommand == MsgCommand.Close)
msg.msgID = "Down";
else if (msg.msgCommand == MsgCommand.Logined)
msg.msgID = "Up";
msg.msgCommand = MsgCommand.UpdateState;
while (DataReader.Read())
{
udpSocket1.Send(IPAddress.Parse(DataReader.GetString(1)),
DataReader.GetInt32(2), new ClassSerializers().SerializeBinary(msg).ToArray());
}
OptionData.Dispose();
UpdateUser();
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -