62,243
社区成员




/// <summary>
/// 提取命令
/// 格式为两个一位整数拼接成的字符串。
/// 第一位为0表示客户机向服务器发送的命令,为1表示服务器向客户机发送的命令。
/// 第二位表示命令的含义,具体如下:
/// "11"-服务器要求客户机更新在线列表
/// "12"-服务器要求客户机做闪屏振动
/// default-接受用户消息或者系统消息的正文
/// </summary>
/// <param name="s">要解析的包含命令的byte数组,只提取前两个字节</param>
/// <returns>拼接成的命令</returns>
private string DecodingBytes(byte[] s)
{
return string.Concat(s[0].ToString(), s[1].ToString());
}
/// <summary>
/// 接受消息的线程执行体
/// </summary>
private void ReceiveMsg()
{
while (true)
{
byte[] packet = new byte[_maxPacket];
_nws.Read(packet, 0, packet.Length);
string _cmd = DecodingBytes(packet);
switch (_cmd)
{
case "12":
{
Nudge();
break;
}
default:
{
Thread.Sleep(3000);
string displaytxt = Encoding.Unicode.GetString(packet);
chatrcd_rtb.AppendText(displaytxt);
//能附加到上面的chatrcd_rtb控件,但是无法用在SHOW出的下面的窗体中打开,SHOW完后该窗体变成无法响应状态,怎么修改下呢?
if (!string.IsNullOrEmpty(msg))
{
//MessageBox.Show(msg);
EasyChat.Msg.Form3 ff = new EasyChat.Msg.Form3();
ff.Show();
}
_sp1.Play();
break;
}
}
}
}