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); }
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}"); } }
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"); } }
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); } }); }
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); }
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); }
public void WyślijDane(Pakiet _pakiet) { Serwer.WyślijDaneUDP(punktKońcowy, _pakiet); }