papo Δημοσ. 1 Μαΐου 2006 Δημοσ. 1 Μαΐου 2006 Γεια σας!!! Έχω αρχίσει εδώ και λίγο καιρό να ασχολούμαι με networking όμως έχω ένα πρόβλημα: έχω δύο προγράμματα ,ένα Server και ένα Client. Όταν στέλνω δεδομένα από τον client στο server όλα είναι εντάξει , όταν όμως κάνω το ανάποδο τα δεδομένα δεν εμφαίζονται κατευθείαν στον client.Δηλαδή πρώτα θα πρέπει να στείλει καινούριο μήνυμα ο cliet και μετά θα εμφανιστούν τα δεδομένα που είχε ήδη στείλει ο server. Τι κάνω λάθος; Server >import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.SwingUtilities; public class showDatagramClient extends JFrame implements ActionListener,Runnable { private JTextArea ta; private JTextField tf; JComboBox b; private DatagramPacket sendPacket,receivePacket,sendPacket1; private DatagramSocket socket; static Thread t,t1; public showDatagramClient() { super("Πελάτης"); Container cp=getContentPane(); tf=new JTextField("Δώστε μήνυμα"); tf.addActionListener(this); cp.add(tf, BorderLayout.NORTH); ta=new JTextArea(); String[] g={"John","James"}; b=new JComboBox(g); cp.add(b, BorderLayout.SOUTH); JScrollPane sc=new JScrollPane(ta); cp.add(ta, BorderLayout.CENTER); setSize(400,300); setVisible(true); try { socket=new DatagramSocket(); } catch(SocketException se) { se.printStackTrace(); System.exit(1); } } public void packetWaiting() { while(true) { try { byte data[]=new byte[100]; receivePacket=new DatagramPacket(data,data.length); socket.receive(receivePacket); ta.append("\nΠακέτο ελήφθη:" +"\nαπό τον host:" +receivePacket.getAddress()+"\nθύρα host: " + receivePacket.getPort() +"\nΜήκος: " +receivePacket.getLength() +"\nΠεριεχόμενα:\n\t"+new String(receivePacket.getData())); } catch(IOException ex) { ta.append(ex.toString()+"\n"); ex.printStackTrace(); } } } public void run() { packet(); packetWaiting(); } public void packet() { String y=(String) b.getSelectedItem(); byte date[]=y.getBytes(); ta.append("\nΠεριεχόμενο πακέτου αποστολής:"+tf.getText()+"\n"); String s=tf.getText(); byte data[]=s.getBytes(); try { sendPacket=new DatagramPacket(data,data.length,InetAddress.getLocalHost(),2000); } catch (UnknownHostException ex) { ex.printStackTrace(); } try { socket.send(sendPacket); } catch (IOException ex) { ex.printStackTrace(); } ta.append("Πακέτο απεστάλη\n"); try { sendPacket1=new DatagramPacket(date,date.length,InetAddress.getLocalHost(),2000); } catch (UnknownHostException ex) { ex.printStackTrace(); } try { socket.send(sendPacket1); } catch (IOException ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { packet(); } public static void main(String args[]) { showDatagramClient c=new showDatagramClient(); c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); c.packetWaiting(); c.packet(); t=new Thread(); t.start(); } } Client >import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.SwingUtilities; public class showDatagramClient extends JFrame implements ActionListener,Runnable { private JTextArea ta; private JTextField tf; JComboBox b; private DatagramPacket sendPacket,receivePacket,sendPacket1; private DatagramSocket socket; static Thread t,t1; public showDatagramClient() { super("Πελάτης"); Container cp=getContentPane(); tf=new JTextField("Δώστε μήνυμα"); tf.addActionListener(this); cp.add(tf, BorderLayout.NORTH); ta=new JTextArea(); String[] g={"John","James"}; b=new JComboBox(g); cp.add(b, BorderLayout.SOUTH); JScrollPane sc=new JScrollPane(ta); cp.add(ta, BorderLayout.CENTER); setSize(400,300); setVisible(true); try { socket=new DatagramSocket(); } catch(SocketException se) { se.printStackTrace(); System.exit(1); } } public void packetWaiting() { while(true) { try { byte data[]=new byte[100]; receivePacket=new DatagramPacket(data,data.length); socket.receive(receivePacket); ta.append("\nΠακέτο ελήφθη:" +"\nαπό τον host:" +receivePacket.getAddress()+"\nθύρα host: " + receivePacket.getPort() +"\nΜήκος: " +receivePacket.getLength() +"\nΠεριεχόμενα:\n\t"+new String(receivePacket.getData())); } catch(IOException ex) { ta.append(ex.toString()+"\n"); ex.printStackTrace(); } } } public void run() { packet(); packetWaiting(); } public void packet() { String y=(String) b.getSelectedItem(); byte date[]=y.getBytes(); ta.append("\nΠεριεχόμενο πακέτου αποστολής:"+tf.getText()+"\n"); String s=tf.getText(); byte data[]=s.getBytes(); try { sendPacket=new DatagramPacket(data,data.length,InetAddress.getLocalHost(),2000); } catch (UnknownHostException ex) { ex.printStackTrace(); } try { socket.send(sendPacket); } catch (IOException ex) { ex.printStackTrace(); } ta.append("Πακέτο απεστάλη\n"); try { sendPacket1=new DatagramPacket(date,date.length,InetAddress.getLocalHost(),2000); } catch (UnknownHostException ex) { ex.printStackTrace(); } try { socket.send(sendPacket1); } catch (IOException ex) { ex.printStackTrace(); } } public void actionPerformed(ActionEvent e) { packet(); } public static void main(String args[]) { showDatagramClient c=new showDatagramClient(); c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); c.packetWaiting(); c.packet(); t=new Thread(); t.start(); } }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.