예제 #1
0
        private void RecMsg(object socketReceiverPara)
        {
            Socket socketListener = socketReceiverPara as Socket;

            while (true)
            {
                //创建一个内存缓冲区 其大小为1024*1024字节  即1M
                byte[] arrRecMsg = new byte[1024 * 1024];
                //将接收到的信息存入到内存缓冲区,并返回其字节数组的长度
                int length = socketListener.Receive(arrRecMsg);
                if (length > 0)
                {
                    //将机器接受到的字节数组转换为人可以读懂的字符串
                    string strRecMsg = Encoding.UTF8.GetString(arrRecMsg, 0, length);
                    Dictionary <string, string> messageSet = new Dictionary <string, string>(CommonHandler.ResolveMessage(strRecMsg));
                    if (!Contact.chatKey.ContainsKey(messageSet["sender"]))
                    {
                        MessageBox.Show(messageSet["value"], messageSet["sender"] + "-" + messageSet["time"]);
                    }
                    else
                    {
                        Contact.chatKey[messageSet["sender"]].NewMessage(messageSet);
                    }
                }
                else
                {
                    break;
                }
            }
            socketListener.Close();
        }