/// <summary> /// Funkcja uruchamiana w momencie naciśnięcia przycisku połączenie z chmura /// </summary> /// <param name="sender">Obiekt, który odpowiedzialny jest za wysłanie eventu</param> /// <param name="e">Otrzymany event po naciśnięciu przycisku</param> private void buttonConnectToCloud_Click(object sender, EventArgs e) { if (buttonConnectToCloudClicked == false) { buttonConnectToCloud.Enabled = false; buttonConnectToCloudClicked = true; //Pobranie indeksu na którym w liście znajduje się IP naszej klienckiej aplikacji int cloudipindex = clientsiplist.IndexOf(_ClientApplication.ClientIP); //Pobranie IP chmury z listy string cloudIP = cloudsiplist[cloudipindex]; try { //Próba połączenia się z IP chmury, z którego bedziemy nasłuchiwali wiadomości send = sS.ConnectToEndPoint(cloudIP); if (send.Connected) { //Uruchomienie nasłuchiwania w aplikacji klienckiej socket = sl.ListenAsync(_ClientApplication.ClientIP); Task.Run(() => { while (true) { byte[] messagebytes; List <byte[]> packages = new List <byte[]>(); //Zamienienie odebranej wiadomości na tablicę bajtów messagebytes = sl.ProcessRecivedBytes(socket); //Utowrzenie znacznika czasowego int numberOfPackages = 1; string timestamp2 = Timestamp.generateTimestamp(); string message = null; short howManyPackages = Package.extractHowManyPackages(messagebytes); short frameID = Package.extractID(messagebytes); packages.Add(messagebytes); if (howManyPackages >= 2) { for (int i = 1; i < howManyPackages; i++) { messagebytes = null; messagebytes = sl.ProcessRecivedBytes2(socket); if (messagebytes == null) { break; } packages.Add(messagebytes); numberOfPackages++; } //Utowrzenie znacznika czasowego string timestamp = Timestamp.generateTimestamp(); //Sortowanie paczek, jakby przy odbiorze paczki zamieniły się miejscami for (int i = 0; i < packages.Count - 1; i++) { if (Package.extractPackageNumber(packages[i]) > Package.extractPackageNumber(packages[i + 1])) { byte[] tmp = packages[i]; packages[i] = packages[i + 1]; packages[i + 1] = tmp; } } for (int i = 0; i < packages.Count(); i++) { message = message + Package.extractUsableMessage(packages[i], Package.extractUsableInfoLength(packages[i])); } //Odpakowanie adresy nadawcy z otrzymanej wiadomości string sourceIp = Package.exctractSourceIP(messagebytes).ToString(); _ClientApplication.updateReceivedMessageTextBox(sourceIp + ": " + message); _ClientApplication.updateReceivedMessageTextBox("\r\n"); _ClientApplication.updateLogTextBox("[" + timestamp + "] == RECEIVED MESSAGE in " + numberOfPackages + " packages from " + howManyPackages + " == S_ClientIP: " + sourceIp); message = null; messagebytes = null; packages = null; } else { //Odpakowanie adresy nadawcy z otrzymanej wiadomości string sourceIp = Package.exctractSourceIP(messagebytes).ToString(); //Stworzenie wiadomości, która zostanie wyświetlona na ekranie - odpakowanie treści wiadomości z paczki string message2 = sourceIp + ": " + Package.extractUsableMessage(messagebytes, Package.extractUsableInfoLength(messagebytes)); //Pojawienie się informacji o otrzymaniu wiadomości _ClientApplication.updateLogTextBox("[" + timestamp2 + "] == RECEIVED MESSAGE == S_ClientIP: " + sourceIp); //Zauktualizowanie wiadomości w polu ReceivedMessage _ClientApplication.updateReceivedMessageTextBox(message2); _ClientApplication.updateReceivedMessageTextBox("\r\n"); message2 = null; messagebytes = null; } } }); } else { throw new NullReferenceException(); buttonConnectToCloud.Enabled = true; buttonConnectToCloudClicked = false; } } catch (Exception err) { MessageBox.Show("Unable to connect to the Network Host!", "Attention!"); } } }
/// <summary> /// Funkcja uruchamiana w momencie naciśnięcia przycisku połączenie z chmura /// </summary> /// <param name="sender">Obiekt, który odpowiedzialny jest za wysłanie eventu</param> /// <param name="e">Otrzymany event po naciśnięciu przycisku</param> private void buttonConnectToCloud_Click(object sender, EventArgs e) { if (buttonConnectToCloudClicked == false) { buttonConnectToCloud.Enabled = false; buttonConnectToCloudClicked = true; string sourceIp; //Pobranie indeksu na którym w liście znajduje się IP naszej klienckiej aplikacji int cloudipindex = clientsiplist.IndexOf(_ClientApplication.ClientIP); //Pobranie IP chmury z listy string cloudIP = cloudsiplist[cloudipindex]; try { //Wiadomość która będzie otrzymywana string message2 = null; //Inicjalizacja ilości paczek int numberOfPackages = 0; //Inicjalizacja ID paczki short frameID; //Próba połączenia się z IP chmury, z którego bedziemy nasłuchiwali wiadomości send = sS.ConnectToEndPoint(cloudIP); if (send.Connected) { //Uruchomienie nasłuchiwania w aplikacji klienckiej socket = sl.ListenAsync(_ClientApplication.ClientIP); Task.Run(() => { while (true) { //Odebrana wiadomość w postaci bytes byte[] messagebytes; //Zamienienie odebranej wiadomości na tablicę bajtów messagebytes = sl.ProcessRecivedBytes(socket); //Stworzenie timestampa string timestamp2 = Timestamp.generateTimestamp(); //Zwiększenie liczby paczek - po odebraniu paczki numberOfPackages++; //Wydobycie ID paczki z otrzymanej wiadomości frameID = Package.extractID(messagebytes); //Odpakowanie adresy nadawcy z otrzymanej wiadomości sourceIp = Package.exctractSourceIP(messagebytes).ToString(); //Stworzenie wiadomości, która zostanie wyświetlona na ekranie - odpakowanie treści wiadomości z paczki string DestinationID = null; int index = _CPCC.establishedConnections.FindIndex(x => x.Equals(sourceIp)) - 1; DestinationID = _CPCC.establishedConnections[index]; message2 = DestinationID + ": " + Package.extractUsableMessage(messagebytes, Package.extractUsableInfoLength(messagebytes)); //Pojawienie się informacji o otrzymaniu wiadomości _ClientApplication.updateLogTextBox("[" + timestamp2 + "] == RECEIVED MESSAGE number " + numberOfPackages + " == S_ClientID: " + DestinationID + " with FrameID=" + frameID); //Zauktualizowanie wiadomości w polu ReceivedMessage _ClientApplication.updateReceivedMessageTextBox(message2); _ClientApplication.updateReceivedMessageTextBox("\r\n"); message2 = null; messagebytes = null; frameID = 0; } }); } else { throw new NullReferenceException(); } } catch (Exception err) { MessageBox.Show("Unable to connect to the Network Host!", "Attention!"); buttonConnectToCloud.Enabled = true; buttonConnectToCloudClicked = false; } } }