Example #1
0
 //接收到局域网客户消息事件
 private void wifiServer_msgReceivedEvent(object sender, MessageEventArgs e)
 {
     string msg = e.Msg;
     controller.handleMessage(msg);
 }
Example #2
0
        private void ResponseClient(Socket socket)
        {
            while (keepReading)
            {
                try
                {
                    int count = socket.Available;
                    //有数据才读
                    if (count > 0)
                    {
                        byte[] buffer = new byte[count];
                        //接收消息
                        socket.Receive(buffer);
                        //对TCP的数据,一定要加上结束符判断数据结束
                        string msg = String.Empty;
                        msg = Encoding.ASCII.GetString(buffer).TrimEnd('\0');
                        //与客户端协议好,处理用 | 分开的消息
                        // 前缀为client表示是新客户连接
                        // 前缀为message表示是数据消息
                        string[] tokens = msg.Split('|');
                        //连接成功后,先发客户端的用户名过来,再接收下一条信息
                        //如果是用户连接消息
                        if (tokens[0] == Config.CLIENT_PRE)
                        {
                            Console.WriteLine(tokens[1]);
                            //如果有用户已经存在,则不处理
                            if (this.userlist.Keys.Contains(tokens[0]))
                            {
                                break;
                            }
                            //否则将用户加入到用户列表中
                            else
                            {
                                //取后面的作为用户名
                                this.userlist.Add(tokens[1], socket);
                            }
                            //触发新用户加入事件,先设置参数
                            ClientConnectEventArgs e1 = new ClientConnectEventArgs();
                            e1.UserName = tokens[1];
                            e1.UserList = this.GetUserList();
                            //通知服务器界面
                            if (this.clientConnectEvent != null)
                            {
                                //参数含义:第一个是sender消息发送者,第二个是消息的参数信息(包含要传递的信息:任何复杂对象!),可以无参数
                                this.clientConnectEvent(this, e1);
                            }
                        }
                        //否则认为是命令消息
                        //if (tokens[0] == Config.CMD_PRE)
                        else
                        {
                            MessageEventArgs e = new MessageEventArgs();
                            e.Msg = msg;
                            controller.handleMessage(msg);
                            //向主线程发送消息事件,让键盘控制器进行相应处理,也可以在这里直接处理
                            //if (this.msgReceivedEvent != null)
                            //{
                            //    this.msgReceivedEvent(this, e);
                            //}
                        }
                    }
                }
                catch (Exception)
                {
                    keepReading = false;
                }

            }
        }
Example #3
0
 //处理串口消息事件
 private void comServer_msgReceivedEvent(object sender, MessageEventArgs e)
 {
 }