<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Zsombor tökéletesen megfogalmazta a megoldást, de Magyusznak is igaza van :)<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Valóban arról van szó, hogy az összetartozó  bájtsorozat (nevezzük message-nek) átküldése után ezen a szinten nekünk kell valamilyen jelet kitalálni, amit a kliens és a szerver is ismer és ezzel jelezhetjük a szervernek, hogy a teljes üzenet átment. <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Ha belegondolunk, rajtunk kívül senki sem tudja, hogy mit is jelent az átküldött bájtsorozat.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Van viszont egy alternatív megoldás, a DatagramPacket, ami nem TCP, hanem UDP alatt működik. Ott egyértelmű, hogy egy átküldött üzenet van csak a csomagban.<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Csatolom a mintakódokat. <br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Dénes <br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-01-18 13:51 GMT+01:00 Zsombor <span dir="ltr">&lt;<a href="mailto:gzsombor@gmail.com" target="_blank">gzsombor@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Erre szoktak kitalálni protokollt, hogy ilyen probléma ne forduljon elő :)<br><br><br></div>Üdv<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2016-01-18 13:00 GMT+01:00 József Keresztes <span dir="ltr">&lt;<a href="mailto:xesj.hu@gmail.com" target="_blank">xesj.hu@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Sziasztok !<br><br></div>Megkaptam Dénes mintakódjait is köszönöm, azt is átnéztem. <br>Közben megfogalmazódott egy kérdés, amibe most bele is futottam, de csak azért mert szerettem volna mélyebb szintre menni, és tényleg megérteni hogy működik a dolog. A probléma a következő: <br><br>A TCP kliens szépen elkezdi küldözgetni a byte-okat a szervernek az OutputStream-en keresztül, a végén a flush() metódust is meghívja, majd a bájtsorozat átküldése után elkezdené olvasni az InputStream-et.<br></div>A probléma az hogy a TCP server nem tudja hogy vége a byte-sorozatnak, mert ugye honnan is tudná ??? Márpedig ő vár egy EOF jelre (-1), vagyis kialakul egy olyan holtpont hogy mindkettő a másikra vár. <br></div><b>A kliens az utolsó bájt átküldése után hogy jelezze azt hogy nincs több küldendő adat ?</b> A neten erre azt a választ találtam hogy a kliens egy close()-zal zárja le az outputstream-et, csakhogy akkor nincs több kommunikáció, tehát ez nem jó megoldás.<br><br></div><div>Addig persze nekem is jó volt a mintapéldám amíg magasabb szintű DataOutputStream-mel bohóckodtam, és readUTF(), writeUTF()-fel küldözgettem az adatokat, de most kizárólag natúr InputStream, OutputStream-met szeretnék használni mindenféle varázslat nélkül.   <br></div><div><br></div>Joe <br><div><div><div><div><br></div></div></div></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2016. január 16. 10:32 Zsombor írta, <span dir="ltr">&lt;<a href="mailto:gzsombor@gmail.com" target="_blank">gzsombor@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ha az egyik oldal lezárja a socket-et, akkor az a másik oldalon is lezárul - a távolságtól függően pár milliszekundum múlva. Ettől függetlenül, ha csak nem zárja le a ServerSocket-et a szerver, ugyanúgy tud újra kapcsolódni a kliens. <br></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2016-01-15 13:17 GMT+01:00 Dénes Medzihradszky <span dir="ltr">&lt;<a href="mailto:medzihradszky.denes@gmail.com" target="_blank">medzihradszky.denes@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Üdv a listának!<br><br>Nincs itt valami félreértés? <br>A kliens socket nem zárható le a szerver által, a szerver max a saját socketjét zárhatja le - amit pl a ServerSocket-től kap - hiszen a kliens tipikusan egy másik JVM-ben fut.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Inkább arról van szó, hogy a szerver oldali socket lezárásával a kliens már nem tud ismételten kapcsolódni.<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Oktatóprogramjaimban itt végtelen ciklusok pörögnek, és/vagy a ServerSocket kapcsolódáskor - accept() - külön szálat indít a létrejött socket objektummal.<span><font color="#888888"><br><br><br></font></span></div><span><font color="#888888"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Dénes<br></div></font></span><div><div><div class="gmail_extra"><br><div class="gmail_quote">2016-01-15 12:48 GMT+01:00 József Keresztes <span dir="ltr">&lt;<a href="mailto:xesj.hu@gmail.com" target="_blank">xesj.hu@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Azt hiszem közben megoldódott. A szerver oldalon lehetett a hiba, ugyanis:<br><br>Socket socket = serverSocket.accept();<br>...<br></div>// input olvasás, output írás <br><div>...<br></div><div>socket.close();<br><br></div><div>és ez utóbbi miatt a kliens socketet a szerver zárta le, így a kliens már nem tudott több kommunikációt kezdeményezni.<br></div><div>Valszeg a kliens és szerver kzötti kommunikációt kell egyeztetni (egy protokolt kitalálni) mikor és ki zárja le a kapcsolatot.<br></div><div>Köszönöm a netty ötletet, de engem most pont a low level szint érdekel.<br><br></div><div>Joe<br></div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2016. január 15. 12:34 László Magyar írta, <span dir="ltr">&lt;<a href="mailto:magyarl05@gmail.com" target="_blank">magyarl05@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Üdv,<div><br></div><div>Ajánlanám TCP és egyéb I/O kommunikációra a <a href="http://netty.io/" target="_blank">netty</a> projektet, ami a &quot;low level&quot; dolgokat elintézi.</div><div><br></div><div><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div>2016. január 15. 12:27 József Keresztes írta, <span dir="ltr">&lt;<a href="mailto:xesj.hu@gmail.com" target="_blank">xesj.hu@gmail.com</a>&gt;</span>:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div><div><div><div><div><div><div><div><div><div>Sziasztok !<br><br></div>A neten keresgéltem, de nem találtam a problémára megoldást.<br></div>A lényeg hogy TCP-s kommunikációt szeretnék egy szerverrel.<br></div>A kliensben létrehozok egy Socket objektumot, és ezzel a socket-tel akarok<br></div>több kérést(választ) csinálni. Tehát csak egyszer akarom a Socket-et létrehozni,<br></div>majd ezen a csatornán írnék az outputstream-be, és olvasnám az inputstream-et,<br></div>majd ismét írnék az outputstream-be, és olvasnám az inputstream-et...stb.<br><br></div>A neten csak olyan példát láttam hogy a kliens egy kérés-válasz után lezártja a socket-et.<br></div>Ha akar valamit újra létrehozza. Nekem ez kicsit furcsa, igaz méréseim szerint a gépemen egy socket 10-20 ms alatt létrejön, de miért kellene minden egyes kérésnél újra létrehozni ?<br><br></div>Java-tól függetlenül: én eddig úgy gondoltam ha pl. egy adatbázishoz be vagyok jelentkezve egy klienssel, és percenként küldöm el az SQL-parancsaimat, akkor nem kezdi el mindig felépíteni nulláról a kapcsolatot az adatbázissal.<br><br></div>Joe<br></div>
<br></div></div>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div></div></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div></div></div></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" rel="noreferrer" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>