• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - zagniezdzone petle - analiza bufora

0 głosów
73 wizyt
pytanie zadane 9 maja 2018 w Java przez acero_m Początkujący (390 p.)

Cześć

Robię projekt polegający na analizie ruchu sieciowego pcap. Stworzyłem klasy które odczytują dane(czas oraz rozmiar pakietu) z pliku wejściowego oraz wyjściowego w formacie .pcap i to działa poprawnie. Problem mam z logarytmem który sprawdza stan bufora (ile razy bufor był pusty, ile razy wyjęcie danych się nie powiodło, czas przez jaki bufor był pusty oraz rozmiar końcowy bufora). Docelowo metoda analysis_buffer ma dodawać lub odejmować input_size/output_size w zależności od input_time/output_time, dane te sprawdzam w pętlach, pierwsza puszczona jest po wielkości tablicy z danymi z pliku wejściowego, druga zagnieżdżona ustawiona jest wielkość tablicy z pakietami wyjściowymi. Program działa jednak output jest niepoprawny.

"Final buffer size: 1227700210.
Buffer was empty 1 times.
Failed attempt to output data from the buffer: 0 times.
Total time for which the buffer was empty: 0.0 seconds."

Wrzucam kod z dwóch metod, więcej chyba nie jest potrzebne.


int buffer_size =0;            //initial size the buffer
int failed_attempt =0;         //count unsuccessful attempt to output packet from the buffer
double time_empty = 0;    //time for which buffer was empty
int count_empty =0;	 //count for which buffer was empty



public void analysis_buffer(PcapPacketArrayList packetArrayList, PcapPacketArrayList packetArrayList2, double[] input_time, double[] output_time, int[] input_size, int[] output_size) {
		
		
		for (int i = 0; i < packetArrayList.size(); i++) {
			
			for (int j = 0; j < packetArrayList2.size(); j++) {
			
				// if output time is greater than input time, add input size to main buffer size
				if (input_time[i] < output_time[j]) {
					buffer_size = buffer_size + input_size[i];				
					}
				
				//  if input time is greater than output time, we have 3 options
				// 	1. buffer size is greater than output size packet and output is subtracted from buffer size
				// 	2. buffer size is smaller than output packet - buffer size is automatically equal 0 
				//  3. buffer size is equal 0, I'm increasing unsuccessful attempt to get out of the buffer and saves time when buffer was empty 
				
				else if (input_time[i] > output_time[j]) {
					
						if(output_size[j] < buffer_size) {										
							buffer_size = buffer_size - output_size[j];
							}
					
						if(output_size[j] > buffer_size) {
							buffer_size = 0;
							count_empty++;
							}
						
						if(buffer_size == 0) {
							failed_attempt++;
							time_empty = time_empty + (output_time[j+1]-output_time[j]);
							}
						}				

				// if input time is equal output time, add and subtract packets from buffer size, or buffer size is automatically equal 0
				else if (input_time[i] == output_time[j]) {
					
					if(output_size[j] < buffer_size) {
						buffer_size = buffer_size + input_size[i] - output_size[j];
						}
					
					if(output_size[j] > (buffer_size + input_size[i])){
						buffer_size = 0;
						count_empty++;
						}
					}				
				}
			}
		}
	

	public void check_buffer() {
		
		System.out.println("Initial buffer size was 0");
		System.out.println("Final buffer size: " + buffer_size +".");
		System.out.println("Buffer was empty " + count_empty +" times.");
		System.out.println("Failed attempt to output data from the buffer: " + failed_attempt +" times.");
		System.out.println("Total time for which the buffer was empty: " + time_empty + " seconds.");
		}

}

I teraz pytanie, w dobry sposób zabrałem się za porównywanie dwóch plików? w czym jest problem, że działania nie wykonują się poprawnie i po przejściu pętli zmienne maja dalej wartość zerowa? Każda wskazówka jest na wagę złota!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 92 wizyt
pytanie zadane 24 czerwca w C i C++ przez magda_19 Obywatel (1,820 p.)
0 głosów
2 odpowiedzi 289 wizyt
pytanie zadane 5 lutego 2017 w C i C++ przez ofnero Użytkownik (830 p.)
0 głosów
2 odpowiedzi 2,718 wizyt
pytanie zadane 22 stycznia 2017 w JavaScript, jQuery, AJAX przez svyatogor92 Użytkownik (660 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

67,129 zapytań

114,075 odpowiedzi

241,788 komentarzy

47,030 pasjonatów

Przeglądających: 200
Pasjonatów: 16 Gości: 184

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...