/// <summary> /// /// </summary> /// <param name="command"></param> /// <param name="buffer"></param> /// <param name="total"></param> /// <param name="maxsize">0: unlimited</param> /// <returns>return true if connected suceffull, false if any exception or authorization faild</returns> private static bool SendRequest(Commands command, ref byte[] buffer, ref int total) { if (server == null) { server = LocalDatabase.GetServerEndpoint(LocalDatabase.ServerType.Offer); } List <byte[]> receivedData = new List <byte[]>(); try { using (TcpClient client = new TcpClient(server.Address.ToString(), server.Port)) { total = 0; byte[] buffor = new byte[1024]; NetworkStream networkStream = client.GetStream(); //Autoryzacja Handshake handshake = new Handshake(); if (handshake.Authorize(ref networkStream) == false) { return(false); } System.Threading.Thread.Sleep(500); //Wysylanie komendy if (SendByteArray(ref networkStream, GetBytes(command.ToString())) == true) { //pobieranie danych int readed = 0; do { readed = networkStream.Read(buffor, 0, buffor.Length); if (readed > 0) { byte[] newBuffor = new byte[readed]; System.Buffer.BlockCopy(buffor, 0, newBuffor, 0, readed); receivedData.Add(newBuffor); } total += readed; } while (readed > 0); } else { Global.Log("Nie udalo się wysłać komendy"); } networkStream.Close(); //Zamykanie połączenia client.Close(); } } catch (SocketException se) { Debug.WriteLine(@"Nie udało się połączyć z serwerem. Socket Exception message: " + se.Message); return(false); } buffer = CombineArrays(receivedData); //Łączenie odebranych danych. return(true); }