コード例 #1
0
        /// <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!");
                }
            }
        }
コード例 #2
0
        /// <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;
                }
            }
        }