コード例 #1
0
        void ProcessData(Socket thisClient, byte[] _data)
        {
            string rData = Encoding.ASCII.GetString(_data);

            if (!string.IsNullOrWhiteSpace(rData) || !string.IsNullOrEmpty(rData))
            {
                var package = SergIOPacket.Deserialize(rData);
                LOG(package.json);
                var data = SergIOData.Deserialize(package.json);
                LOG($"SERVER received {data.name}");
                switch (package.packetType)
                {
                case TypeEvent.CONNECT:
                    break;

                case TypeEvent.NEWCONNECTION:
                    break;

                case TypeEvent.PONG:
                    break;

                case TypeEvent.MESSAGE:
                    CallCallback(data);
                    if (!clients.Contains(thisClient))
                    {
                        clients.Add(thisClient);
                    }
                    EmitPackage(package);
                    break;

                case TypeEvent.DISCONNECT:
                    EmitPackage(package);
                    clients.Remove(thisClient);
                    DisconnectClient(thisClient);
                    break;
                }
            }
            else
            {
                LOG("The data received is empty");
            }
        }
コード例 #2
0
 void EmitPackage(SergIOPacket packet)
 {
     if (!IsServerRunning)
     {
         return;
     }
     LOG("Prepare to send data");
     try
     {
         byte[] b = packet.Seralize().GetBytes();
         foreach (var c in clients)
         {
             if (c.Connected)
             {
                 c.Send(b);
             }
         }
     }catch (Exception e) {
         LOG(e.ToString());
     }
     LOG("End sending Data");
 }