Komunikacja za pomcoą TCP

0

Tak, wiem było o tym tysiące tematów w internecie, a ja znowu to wyciągam...
Uprzedzając wasze pytania i docinki tak skorzystałem z google i doc.
Po prostu już się pogubiłem, zgłupiałem i potrzebuję pomoc kogoś doświadczonego kto by mnie poprowadził.

Piszę w celach edukacyjnych program na komunikację z serwerem. Program wykorzystuje XMLSocket i korzysta z protokołu TCP do początkowego porozumiewania się, potem przechodzi na SSL, ale co to, jak to robi itd. będę męczył się potem ;)
Problem polega na tym, że nie wiem jak zgrać server z moim clientem.
Nawiązuję z serverem połączenie w TCP, wysyłam do niego pewien String i w zmian otrzymuję liczbę 60, powinienem natomiast dostać w odpowiedzi inny String... Myślałem że źle tworzę wiadomość XML, ale to raczej nie to bo z nasłuchu pakietów wynika że serwer wysyła do mnie odpowiedź, niestety program jej nie słyszy.
Nie mam pojęcia w czym jest problem.
Porównałem wiadomości wysyłane przez oryginalnego clienta i mojego, różniły się:

  • portem na którym odbierały, ale między sobą też sie tym różniły
  • długością wysyłanej wiadomości - u mnie są to 62 znaki, a tam 63

Jednak jak wspominałem otrzymuję odpowiedź, jednak jej nie odbieram.
Tutaj kod odpowiedzialny za tworzenie wiadomości:

         String xml = "<policy-file-request/>";
         out.write(xml.getBytes());
         out.write((byte)0);

Tutaj kod odpowiedzialny za odbieranie(?):

	 InputStream inFromServer = client.getInputStream();
         DataInputStream in =
                        new DataInputStream(inFromServer);
         System.out.println("Message from server: " + in.read());//odebrana wiadomość
         client.close();

Kod jest umieszczony bezpośrednio po kodzie odpowiedzialnym za wiadomość :)

A tak wygląda nawiązanie połączenia:

         Socket client = new Socket(serverName, port);

Mam nadzieję że wszystko dobrze rozpisałem, jeżeli nie to przepraszam i jak najszbciej postaram się uzupełnić temat.

1

Nawiązuję z serverem połączenie w TCP, wysyłam do niego pewien String i w zmian otrzymuję liczbę 60, powinienem natomiast dostać w odpowiedzi inny String...

System.out.println("Message from server: " + in.read());//odebrana wiadomość

Nie odbierasz Stringa tylko jeden bajt ze strumienia:
https://docs.oracle.com/javase/7/docs/api/java/io/FilterInputStream.html#read()
pierwszy znak Twojego Stringa to < a on ma właśnie kod 60.

0

Faktycznie, żę tego nie zauważyłem :)
Bardzo dziękuję za pomoc :)
Użyłem już readLine() i wszystko ładnie dziala.
Temat do zamknięcia ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1