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

Pobieranie informacji z serwera java socket

Object Storage Arubacloud
0 głosów
432 wizyt
pytanie zadane 21 października 2017 w Java przez niezalogowany
Witam,
posiadam klienta oraz serwer schematyczna komunikacja wygląda tak:

--- CLIENT ---
Client->wyślijNaServer("podajMiWielkośćListy")->Server;

 
--- SERWER ---
if(odebrane.equals("podajMiWielkośćListy"))
       Server->wyslijDoClienta("Wielkość tablicy wynosi: 20")->Client;

--- Nowa Inna Klasa (Main) ---
if(toCoOtrzymałClientOdSerwera < 10)

     print("Dołączyłeś do serwera")
 else
     print("Maksymalna ilość osób")

Odbieranie Clienta i Serwera jest obsługiwane w nowym wątku, tu nasuwa się pytanie jak w prosty sposób przypisać wartość do zmiennej, aby móc sprawdzić warunek? Aby w zmiennej było już zapisane to co powinno być. Doradziłby ktoś coś? :)

Pozdrawiam ;)

1 odpowiedź

0 głosów
odpowiedź 22 października 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Każdy socket ma coś takiego jak input stream i output stream. Musisz pobrać ze zmiennej socket output stream i używając metod streamu pobrać wysłane dane.
komentarz 22 października 2017 przez niezalogowany
Tak, potrafię odbierać i wysyłać dane. Problem polega na tym, że gdy coś client odbierze ustawia wartość zmiennej np. int x = OdebranaWartośćOdSerwera;

Ale gdy wykonam metodę getX() w innej klasie, dostaje nieprawidłową wartość, gdyż wątek jeszcze nie zdążył jej ustawić tak myślę. ;(
komentarz 22 października 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Jeśli uważasz że problem jest z wątkami to musisz je jakoś zsynchronizować. Jeśli masz jeden wątek odbierający i chcesz aby twój główny wątek poczekał na odbiór to możesz po stworzeniu wątku przyczepić się do niego czekając na jego skończenie.

Możesz do tego użyć np join()
komentarz 22 października 2017 przez niezalogowany
No ale wątek odbierania nigdy się nie skończy. ;(
komentarz 22 października 2017 przez Mateusz51 Nałogowiec (28,180 p.)
To w takim razie musisz użyć trochę trudniejszej synchronizacji.W wątku w którym pobierasz możesz założyć locka na jakimś obiekcie i zwolnić go po pobraniu wartosci.  W wątku gdzie chcesz użyć tej wartości możesz zsynchronizować się na tym obiekcie lock i poczekać aż blokada zostanie zwolniona.
komentarz 22 października 2017 przez niezalogowany

Dzięki twoim wskazówką dodałem taki kod:

 private final CountDownLatch set = new CountDownLatch(1);

    public Boolean getValue() throws InterruptedException {
        set.await();
        return value;
    }
    
    public synchronized void setValue(Boolean value) {
        if (set.getCount() > 0) {
            this.value = value;
            set.countDown();
        }
    }

I gdy pobieram od razu wartość jest poprawna. :) Dzięki

Podobne pytania

+1 głos
1 odpowiedź 120 wizyt
pytanie zadane 11 stycznia w Java przez Specjalny Nowicjusz (230 p.)
0 głosów
1 odpowiedź 442 wizyt
pytanie zadane 15 stycznia 2019 w Java przez ILikeJava Obywatel (1,230 p.)
0 głosów
0 odpowiedzi 2,828 wizyt
pytanie zadane 7 maja 2018 w Java przez Patryk8090 Użytkownik (520 p.)

92,568 zapytań

141,422 odpowiedzi

319,635 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...