Ciao a tutti,
ho un piccolo problema con XMLSocket.
Ho una piccola chat client(flash)/server(java).
Il server multithread gestisce l'accesso dei vari client e offre un servizio di messaging multicast.
La cosa che non capisco è che per poter ottenere risposta (e generare l'evento EventData.DATA) dal server ogni client deve chiamare due volte il metodo send della classe XMLSocket.
In sostanza il buffer sul socket non viene svuotato al primo send ma al secondo!
Ecco il codice...
client in flash
codice:var xmlsock:XMLSocket = new XMLSocket(); xmlsock.connect("127.0.0.1", 8080); xmlsock.addEventListener(DataEvent.DATA, _onData); function _onData(event:DataEvent):void{ trace("[" + event.type + "] " + event.data); } btn.addEventListener(MouseEvent.MOUSE_DOWN,_send); function _send(evt:MouseEvent){ xmlsock.send("<root>Ciao</root>\n"); xmlsock.send(""); }
questo è il pezzo di codice in java
server in java
qualcuno saprebbe dirmi dov'è il problema?codice:......... public void run(){ try{ boolean done = false; while (!done){ System.out.println(">> in attesa del messaggio"); String str = readerIn.readLine(); System.out.println("Messaggio: " + str); if (str == null) done = true; else{ if(str.trim().equals("EXIT")) done = true; else out(str); } } incoming.close(); }catch (Exception e){ System.out.println(e); } } private void out(String str) { for(int i = 0;i < client.size();i++) ((ClientThread)client.elementAt(i)).send(str); } private void send(String str){ try{ printOut.println(str); System.out.println("spedito il messaggio al flash: " + str); }catch(Exception e){ e.printStackTrace(); } }

Rispondi quotando