Προς το περιεχόμενο

Java Network Programming


papo

Προτεινόμενες αναρτήσεις

Γεια σας!!! Έχω αρχίσει εδώ και λίγο καιρό να ασχολούμαι με 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(); 

} 
} 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...