Salve a tutti, sono abbastanza disperato perchè non trovo una soluzione e quindi andrò subito al dunque.. Sto facendo un piccolo giochino ma all'inizio c'è un menù di scelta dei personaggi. Qui avviene la connessione client/server e ogni volta che cambio personaggio nel client ad esempio spedisco un numero al server che mi disegnerà nella schermata del server il personaggio scelto dall'avversario e vice versa. Spedendo i dati dal KeyPressed (cioè ogni volta che si cambia un personaggio) il gioco si blocca un paio di secondi e poi spedisce i numeri, e non è esattamente quello che voglio dato che deve essere una cosa fluida spedire un intero.. -.-
Vi aggiungo il codice incriminato in caso vi sia utile..
CLASSE ChooseCharacter LATO SERVER (identica nel lato client)
CLASSE ClientConnection (dal server mi connetto al client)codice:public class ChooseCharacter extends Canvas implements MouseListener, KeyListener { JFrame f; Image sfondo; Image[] p = new Image[4]; ClientConnection c = new ClientConnection(); int i, a; public ChooseCharacter(JFrame frame) { f = frame; this.addMouseListener(this); this.addKeyListener(this); f.setTitle("Scelta Personaggio"); sfondo = Toolkit.getDefaultToolkit().getImage("sceltaPersonaggio.jpg"); sfondo = sfondo.getScaledInstance(f.getWidth(), f.getHeight(), Image.SCALE_DEFAULT); p[0] = Toolkit.getDefaultToolkit().getImage("p0.jpg"); p[1] = Toolkit.getDefaultToolkit().getImage("p1.jpg"); p[2] = Toolkit.getDefaultToolkit().getImage("p2.jpg"); p[3] = Toolkit.getDefaultToolkit().getImage("p3.jpg"); c.attendiClient(); i = 0; } @Override public void paint(Graphics g) { g = (Graphics2D) g; g.drawImage(sfondo, -5, -35, this); g.drawImage(p[i], 50, 50, this); g.drawImage(p[a], 200, 50, this); } public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_UP) if(i == 3) i=0; else i++; if(e.getKeyCode() == KeyEvent.VK_DOWN) if (i==0) i=3; else i--; c.inviaDati(i); a = c.riceviDati(); repaint(); } }
CLASSE ServerConnection (lato client per la connessione verso il server)codice:import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ClientConnection { ServerSocket server = null; Socket client = null; DataInputStream dis = null; DataOutputStream dos = null; public ClientConnection() { } public Socket attendiClient() { try { server = new ServerSocket(5000); client = server.accept(); server.close(); dis = new DataInputStream(new DataInputStream(client.getInputStream())); dos=new DataOutputStream(client.getOutputStream()); } catch(Exception e) { System.out.println(e.getMessage()); System.out.println("Errore durante la connessione"); System.exit(1); } return client; } public int riceviDati() { try { System.out.print("" + dis.readInt()+'\n'); return dis.readInt(); } catch (IOException ex) { } System.out.print("Non sono dentro il try"+'\n'); return 0; } public void inviaDati(int val) { try { dos.writeInt(val); } catch(IOException e){} } }
dovrebbe essere il minimo essenziale per scrivere se non sbaglio.. forse mi sono dimenticato qualcosa ma dovrebbe funzionare così.. Aiutatemi vi pregooo!!codice:import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; public class ServerConnection { Socket client = null; DataInputStream dis = null; DataOutputStream dos = null; public ServerConnection() { } public void connetti() { try { client = new Socket("192.168.1.100", 5000); dis = new DataInputStream(client.getInputStream()); dos = new DataOutputStream(client.getOutputStream()); } catch(IOException e) { e.printStackTrace(); } } public int riceviDati() { try { System.out.print("" + dis.readInt()+'\n'); return dis.readInt(); } catch (IOException ex) { } System.out.print("Non sono nel try"+'\n'); return 0; } public void inviaDati(int val) { try { dos.writeInt(val); } catch (IOException ex) { } } }

Rispondi quotando