예제 #1
0
        private void OnDataReceived(IAsyncResult asyn)
        {
            try
            {
                int iRx = 0;
                iRx = socket.EndReceiveFrom(asyn, ref client);

                char[] chars          = new char[iRx - 1];
                System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
                int charLen           = d.GetChars(dataBuffer,
                                                   0, iRx - 1, chars, 0);
                String szData = new System.String(chars);

                if (szData[0].Equals('*'))
                {
                    if (szData[1].Equals('C'))
                    {
                        string id = szData.Substring(2);
                        if (!id.Equals(clientID))
                        {
                            clientID = id;
                            SendData("A\n");
                            TouchPal.Debug("Client (" + id + ") connected.");
                            manager.ClientConnected();
                        }
                    }
                    if (szData[1].Equals('R') && manager != null)
                    {
                        manager.ResetControls();
                        SendData("A\n");
                    }
                }
                else if (manager != null)
                {
                    string[] controlUpdates = szData.Split(new Char[] { ':' });
                    foreach (string controlUpdate in controlUpdates)
                    {
                        string[] values = controlUpdate.Split(new Char[] { '=' });
                        if (values.Count() == 2)
                        {
                            try
                            {
                                int networkID = Convert.ToInt32(values[0]);
                                manager.UpdateControl(networkID, values[1]);
                                SendData("A\n");
                            }
                            catch (FormatException fe)
                            {
                                TouchPal.Error("Bad network id value (" + values[0] + ") received from client - " + fe.Message);
                            }
                        }
                    }
                }
                WaitForData();
            }
            catch (SocketException se)
            {
                Console.WriteLine(se.Message);
            }
        }
예제 #2
0
 private void OnClientConnect(IAsyncResult asyn)
 {
     try
     {
         TouchPal.Debug("Client connected.");
         clientSocket = mainSocket.EndAccept(asyn);
         WaitForData();
         if (manager != null)
         {
             manager.ClientConnected();
         }
     }
     catch (ObjectDisposedException)
     {
         WaitForConnect();
     }
     catch (SocketException se)
     {
         Console.WriteLine(se.Message);
     }
 }