Aplikacja typu Server/Client - nieprzesyłanie danych

Aplikacja typu Server/Client - nieprzesyłanie danych
R3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Witam,
ostatnio pracuję nad prostym komunikatorem opartym na protokole TCP/IP. Napisałem już kod serwera i klienta, ale moje aplikacje nie potrafią przesyłać kodu między sobą. Niby wszystko działa, gdy wyślę wcześniej przygotowanego Stringa (String str = "moj tekst";) ale gdy chce wysłać Stringa z zawartością wpisaną przez użytkownika nic z tego nie wychodzi ;/

http://rob1n92.pl/download/NetBeansProjects.7z

PS. W załączniku spakowałem cały projekt NetBeans. Kod serwera jest jeden, opracowałem do niego dwa klienty - konsolowy (do szybkiego testowania) i graficzny. Oba nie potrafią przesłać danych na serwer. Btw, link jest bezpieczny, dodałem to tak bo forumowa opcja załączania mi nie działała.

PSS. Nie zawracałbym Wam głowy gdybym sam był w stanie sobie z tym poradzić, ale męczę się już kolejny dzień i ciągle nie mogę znaleźć błędu... Także wszelka pomoc mile widziana :)

  • Rejestracja: dni
  • Ostatnio: dni
0

Zastanawia mnie tylko czemu używasz akurat DataInputStream i DataoutputStream zamiast np BufferedReader'a i PrintStream'a ??

R3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

w sumie to nie wiem, znalazłem kiedyś na jakimś tutorialu i tak już zostało; wieczorem spróbuje BufferedReader i PrintStream

EDIT:
Zmieniłem na BufferedReader i PrintStream i niestety dalej nie przesyła danych...

T6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Przejrzałem na szybkiego kod i na razie jedyne co mi się nasuwa to że nie używasz metody flush() po napisaniu do strumienia metodą write() (czy writeUTF() wszystko jedno). Spróbuj poprawić (dopisać wykonywanie flusha ) i sprawdź.

R3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Niestety dalej nie działa, ale gdy rozłączę klienta graficznego od serwera to w aplikacji serwerowej pojawia się ostatnio wysłany tekst.

EDIT:
Rozwiązałem problem! Jak zwykle okazało się, że była to pierdoła... Wystarczyło w funkcji odbierającej przypisać nowego Stringa zmiennej, która odbiera.

zamiast:

Kopiuj
Txt = Is.readUTF();
if (!Txt.isEmpty()) Konsola.showText(Txt);

trzeba było dać to:

Kopiuj
Txt = Is.readUTF();
if (!Txt.isEmpty()) Konsola.showText(Txt);
Txt = new String();

Dzięki wszystkim za pomoc :)

  • Rejestracja: dni
  • Ostatnio: dni
0

Śmiem twierdzic ze to dziala przypadkowo, nie mam pojecia co ta jedna linijka ma niby zmienic...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.