public void Rozłącz()
 {
     gniazdo.Close();
     strumień       = null;
     otrzymaneDane  = null;
     otrzymajBuffer = null;
     gniazdo        = null;
 }
 private static void WyślijDaneUDPdoWszystkich(Pakiet pakiet)
 {
     pakiet.WriteLength();
     for (int i = 1; i <= Serwer.MaksGraczy; i++)
     {
         Serwer.klienci[i].udp.WyślijDane(pakiet);
     }
 }
 public static void Powitanie(int doKlienta, string msg)
 {
     using (Pakiet _pakiet = new Pakiet((int)PakietySerwera.welcome))
     {
         _pakiet.Write(_msg);
         _pakiet.Write(_doKlienta);
         SendTCPData(_doKlienta, _pakiet);
     }
 }
 public static void RotacjaGracza(Gracz _gracz)
 {
     using (Pakiet _pakiet = new Pakiet((int)PakietySerwera.rotacjaGracza))
     {
         _pakiet.Write(_gracz.id);
         _pakiet.Zapisz(_gracz.transform.rotation);
         WyślijDaneUDPdoWszystkich(_pakiet);
     }
 }
 public static void OdródźGracza(int doKlienta, Gracz _gracz)
 {
     using (Pakiet _pakiet = new Pakiet((int)PakietySerwera.odródźGracza))
     {
         _pakiet.Write(_gracz.id);
         _pakiet.Write(_gracz.nazwaGracza);
         _pakiet.Zapisz(_gracz.transform.position);
         _pakiet.Zapisz(_gracz.transform.rotation);
         SendTCPData(_doKlienta, _pakiet);
     }
 }
    public static void RuchGracza(int _odKlienta, Pakiet _pakiet)
    {
        bool[] _wejścia = new bool[_pakiet.ReadInt()];
        for (int i = 0; i < _wejścia.Length; i++)
        {
            _wejścia[i] = _pakiet.ReadBool();
        }
        Quaternion _rotacja = _pakiet.CzytajKwaternion();

        Serwer.klienci[_odKlienta].gracz.UstawWejście(_wejścia, _rotacja);
    }
 private static void WyślijDaneUDPdoWszystkich(int wyłączKlienta, Pakiet pakiet)
 {
     pakiet.WriteLength();
     for (int i = 1; i <= Serwer.MaksGraczy; i++)
     {
         if (i != _wyłączKlienta)
         {
             Serwer.klienci[i].udp.WyślijDane(_pakiet);
         }
     }
 }
        public void Połącz(TcpClient _gniazdo)
        {
            gniazdo = _gniazdo;
            gniazdo.ReceiveBufferSize = rozmiarBufferaDanych;
            gniazdo.SendBufferSize    = rozmiarBufferaDanych;

            strumień       = gniazdo.GetStream();
            otrzymaneDane  = new Pakiet();
            otrzymajBuffer = new byte[rozmiarBufferaDanych];
            strumień.BeginRead(otrzymajBuffer, 0, rozmiarBufferaDanych, OtrzymajOddzwonienie, null);
            WysyłkaSerwera.Powitanie(id, "Witaj na serwerze!");
        }
    public static void PowitanieOtrzymane(int _odKlienta, Pakiet _pakiet)
    {
        int    _sprawdźIdKlienta = _pakiet.ReadInt();
        string _nazwaloginu      = _pakiet.ReadString();

        Debug.Log($"{Serwer.klienci[_odKlienta].tcp.gniazdo.Client.RemoteEndPoint} połączył się z powodzeniem i teraz jest graczem {_odKlienta}.");
        if (_odKlienta != _sprawdźIdKlienta)
        {
            Debug.Log($"Gracz \" {_nazwaloginu }\"(ID: {_odKlienta}) otrzymał złe ID klienta ({_sprawdźIdKlienta})!");
        }
        Serwer.klienci[_odKlienta].WyślijDoGry(_nazwaloginu);
    }
Ejemplo n.º 10
0
 public static void WyślijDaneUDP(IPEndPoint _końcowyPunktKlienta, Pakiet _pakiet)
 {
     try
     {
         if (_końcowyPunktKlienta != null)
         {
             nasłuchujUdp.BeginSend(_pakiet.ToArray(), _pakiet.Length(), _końcowyPunktKlienta, null, null);
         }
     }
     catch (Exception _ex)
     {
         Console.WriteLine($"Błąd przesyłu danych do {_końcowyPunktKlienta} po przez UDP: {_ex}");
     }
 }
Ejemplo n.º 11
0
 public void WyślijDane(Pakiet _pakiet)
 {
     try
     {
         if (gniazdo != null)
         {
             strumień.BeginWrite(_pakiet.ToArray(), 0, _pakiet.Length(), null, null);
         }
     }
     catch
     {
         Debug.Log($"Błąd przesyłu danych do gracza {id} via TCP");
     }
 }
Ejemplo n.º 12
0
        public void ObsłużDane(Pakiet _danePakietu)
        {
            int _długośćPakietu = _danePakietu.ReadInt();

            byte[] _bityPakietu = _danePakietu.ReadBytes(_długośćPakietu);

            ManagerWątku.ExecuteOnMainThread(() =>
            {
                using (Pakiet _pakiet = new Pakiet(_bityPakietu))
                {
                    int _idPakietu = _pakiet.ReadInt();
                    Serwer.obsługaPakietu[_idPakietu](id, _pakiet);
                }
            });
        }
Ejemplo n.º 13
0
        private bool ObsłużDane(byte[] _dane)
        {
            int _długośćPakietu = 0;

            otrzymaneDane.SetBytes(_dane);

            if (otrzymaneDane.UnreadLength() >= 4)
            {
                _długośćPakietu = otrzymaneDane.ReadInt();
                if (_długośćPakietu <= 0)
                {
                    return(true);
                }
            }

            while (_długośćPakietu > 0 && _długośćPakietu <= otrzymaneDane.UnreadLength())
            {
                byte[] _bityPakietu = otrzymaneDane.ReadBytes(_długośćPakietu);
                ManagerWątku.ExecuteOnMainThread(() =>
                {
                    using (Pakiet _pakiet = new Pakiet(_bityPakietu))
                    {
                        int _idPakietu = _pakiet.ReadInt();

                        Serwer.obsługaPakietu[_idPakietu](id, _pakiet);
                    }
                });


                _długośćPakietu = 0;


                if (otrzymaneDane.UnreadLength() >= 4)
                {
                    _długośćPakietu = otrzymaneDane.ReadInt();
                    if (_długośćPakietu <= 0)
                    {
                        return(true);
                    }
                }
            }

            if (_długośćPakietu <= 1)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 14
0
    private static void UDPOtrzymajOddzwoń(IAsyncResult _rezultat)
    {
        try
        {
            IPEndPoint _końcowyPunktKlienta = new IPEndPoint(IPAddress.Any, 0);
            byte[]     _dane = nasłuchujUdp.EndReceive(_rezultat, ref _końcowyPunktKlienta);
            nasłuchujUdp.BeginReceive(UDPOtrzymajOddzwoń, null);

            if (_dane.Length < 4)
            {
                return;
            }

            using (Pakiet _pakiet = new Pakiet(_dane))
            {
                int _idKlienta = _pakiet.ReadInt();

                if (_idKlienta == 0)
                {
                    return;
                }
                if (klienci[_idKlienta].udp.punktKońcowy == null)
                {
                    klienci[_idKlienta].udp.Połącz(_końcowyPunktKlienta);
                    return;
                }

                if (klienci[_idKlienta].udp.punktKońcowy.ToString() == _końcowyPunktKlienta.ToString())
                {
                    klienci[_idKlienta].udp.ObsłużDane(_pakiet);
                }
            }
        }
        catch (Exception _ex)
        {
            Console.WriteLine($"Błąd w otrzymaniu danych UDP: {_ex}");
        }
    }
 private static void SendTCPData(int doKlienta, Pakiet pakiet)
 {
     pakiet.WriteLength();
     Serwer.klienci[doKlienta].tcp.WyślijDane(pakiet);
 }
 private static void WyślijDaneUDP(int doKlienta, Pakiet pakiet)
 {
     _pakiet.WriteLength();
     Serwer.klienci[_doKlienta].udp.WyślijDane(_pakiet);
 }
Ejemplo n.º 17
0
 public void WyślijDane(Pakiet _pakiet)
 {
     Serwer.WyślijDaneUDP(punktKońcowy, _pakiet);
 }