Exemplo n.º 1
0
        public static void Wykonaj(Pakiet _pakiet)
        {
            List<object> obiekty = new List<object>();
            MethodInfo[] methods = Ustawienia.funkcjeOdbierajace.GetType().GetMethods();

            int indexer = 0;
            foreach (MethodInfo info in methods)
            {
                if (info.Name == _pakiet.NazwaFunkcji())
                {
                    ParameterInfo[] pars = info.GetParameters();
                    foreach (ParameterInfo p in pars)
                    {
                        switch (p.ParameterType.Name)
                        {
                            case "String":
                                {
                                    obiekty.Add(Konwersja.ByteToString(_pakiet.argumenty[indexer]));
                                }
                                break;
                            case "Int32":
                                {
                                    obiekty.Add(Konwersja.ByteToInt(_pakiet.argumenty[indexer]));
                                }
                                break;
                            case "Socket":
                                {
                                    obiekty.Add(_pakiet.kto);
                                    indexer--;
                                }
                                break;
                        }
                        indexer++;
                    }
                    info.Invoke(null, obiekty.ToArray());
                }

            }
        }
Exemplo n.º 2
0
 static void CiecieBuffora(Socket _socket, Klient _klient, int _odebrane)
 {
     _klient.bufforZajete += _odebrane;
     int indexer = 0;
     bool przerwanie = false;
     while (_klient.bufforZajete - indexer > 0)
     {
         int dlugosc = (int)_klient.buffor[indexer] - 1;
         indexer++;
         if (dlugosc <= _klient.bufforZajete - indexer)
         {
             byte[] przejsciowa = new byte[dlugosc];
             Array.Copy(_klient.buffor, indexer, przejsciowa, 0, dlugosc);
             Pakiet pakiet = new Pakiet(przejsciowa, _socket);
             pakiet.Wykonanie();
             Staty.pakietyOdebrane++;
             Staty.WyswietlStaty();
             indexer += dlugosc;
         }
         else
         {
             indexer--;
             byte[] przejsciowa = new byte[_klient.bufforZajete - indexer];
             Array.Copy(_klient.buffor, indexer, przejsciowa, 0, _klient.bufforZajete - indexer);
             Array.Copy(przejsciowa, _klient.buffor, przejsciowa.Length);
             _klient.bufforZajete = przejsciowa.Length;
             przerwanie = true;
             break;
         }
     }
     if (!przerwanie)
         _klient.bufforZajete = 0;
 }