Sziasztok,
Elnézést mindenkitől. Elég kezdő vagyok. Van egy házi feladatom és elakadtam. Egy X0 játékot csinálok, meg is van. De mivel hálózaton kell neki működni vannak gondjaim. Létrehozom a main-ben a ServerSocket-et, és ki rakom egy szálba az accept -el.
kb így:
XO Felulet = new XO(); Felulet.setVisible(true); ServerSocket ss=null; try { System.out.println("Létre hozom az ss -t"); ss=new ServerSocket(lPort); System.out.println("Létre hozva az ss"); } catch (IOException ex) { Logger.getLogger(XO.class.getName()).log(Level.SEVERE, null, ex); } try { System.out.println("Következő sorban indul a szál"); new Szal(ss.accept()).start(); // <-- itt System.out.println("A szál elindult"); } catch (IOException ex) { Logger.getLogger(XO.class.getName()).log(Level.SEVERE, null, ex); }
A gondom az, hogy a kiemelt sor-tól ki akad. A Szal az egy belső osztály (alosztály) így kezdődik:
static class Szal extends Thread implements Runnable { }
Az osztály már nem hívódik meg. A konstruktorába a System.out.println() már nem hívódik meg, illetve a JFrame -emen sem látszik semmi. Azt értem, hogy az accept blokkolva tartja egy kliens kapcsolatig a szálat, DE miért nem látszik semmi a Swing-ben ? Olyan mintha a thread nem is indulna. Próbáltam azt is hogy nem adok át semmit a Szal konstruktorába és ott indítom el a ServerSocket accept-et. De minden maradt ugyanúgy. Ha ki kommentelem a kiemelt sort akkor tökéletesen látszik, és működik minden a JFrame -en.
Kérnék egy kis út mutatást.
Köszönöm
5 Comments
Auth Gábor
Biztos ír egy stacktrace-t, abból idézhetnél.
Sok Sok
Szia Gábor.
Nagyon köszi a formázást.
Sajnos nincs StackTrace Hiba nélkül fut, illetve futna.
Íme a két build screenshotja.
Untitled.png
Untitled2.png
Auth Gábor
Nem fogom legépelni a képben látható forrást, de:
És itt nézd meg, hogy kiír-e valamit.
Anonymous
Mármint, miután kapcsolódott valaki hozzá, akkor utána nem hívódik meg a konstruktor ? Mert, lehet, hogy csak az a baj, hogy azt képzeled, hogy már az ss.accept() is az új szálban indulna, noha nem.
Sok Sok
Az accept-et indítottam a konstruktorból is.
Kipróbáltam, de nem hozott eredményt.
Végül is megoldódott.
Köszi szépen a segítséget.
Azt csináltam , hogy írtam egy külön osztályt (szerver), és abból indítom a szállat, így a swing -is futt, és a szerver osztály a thread jével együtt nyugodtan várhatja a connect-et.