Hi Leute,
bin neu hier und habe gleich ein Problem ^^. Ich schreibe gerade ein Programm zur Übertragung von Dateien. Das Empfangen von Daten - zur Zeit ein simpler String zum testen - fuktioniert problemlos (habe ich mit einem Chat - Programm getestet). Wenn ich aber Senden will kommet der String nicht mal auf den Weg (out.print(); out.flush(); ). Bitte um Hilfe denn ich komm einfach nicht drauf^^. (Problem vermutlich bei 387)
Greetz KeNnY.
	
	
	
	
	
		
	
			
			bin neu hier und habe gleich ein Problem ^^. Ich schreibe gerade ein Programm zur Übertragung von Dateien. Das Empfangen von Daten - zur Zeit ein simpler String zum testen - fuktioniert problemlos (habe ich mit einem Chat - Programm getestet). Wenn ich aber Senden will kommet der String nicht mal auf den Weg (out.print(); out.flush(); ). Bitte um Hilfe denn ich komm einfach nicht drauf^^. (Problem vermutlich bei 387)
Greetz KeNnY.
		Java:
	
	import java.io.*;
import java.net.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class Datentransfer extends JFrame
{   
    public static final int SENDER      = 0;
    public static final int EMPFÄNGER   = 1;
    public static final int VERBINDEN   = 2;
    public static final int VERBUNDEN   = 3;
    public static final int GETRENNT    = 4;
    public static final int SENDEN      = 5;
    public static final int NICHTSENDEN = 6;
    
    public static ServerSocket hostServer = null;
    public static Socket socket = null;
    public static BufferedReader in = null;
    public static PrintWriter out = null;
    
    public static String sendMsg = "100";
    public static String testMsg = "";
    
    private int WasBinIch;
    private int Status;
    private int SendOrNot;
    
    private ButtonGroup RBGruppe = new ButtonGroup();
 
    private Container contentPane = getContentPane();
    
    private JLabel L_Datei = new JLabel("Datei: ");
    private JLabel L_DateiAnzeigen = new JLabel();
    private JLabel L_ZielIP = new JLabel("IP des Ziels: ");
    private JLabel L_ZielPort = new JLabel("Port: ");
    private JLabel L_Fortschritt = new JLabel("Fortschritt: ");
    private JLabel L_UploadGeschwindigkeit = new JLabel("Upload Geschwindigkeit: ");
    private JLabel L_DownloadGeschwindigkeit = new JLabel("Download Geschwindigkeit: ");
    private JLabel L_DLAnzeige = new JLabel("N/A");
    private JLabel L_ULAnzeige = new JLabel("N/A");
    private JLabel L_VerbundenMit = new JLabel("Verbunden mit: ");
    private JLabel L_KontrollHash = new JLabel("Kontroll Hash: ");
    private JLabel L_VMAnzeige = new JLabel("N/A");   
    private JLabel L_KHAnzeige = new JLabel("N/A");
    
    private JTextField T_IP = new JTextField(12);
    private JTextField T_Port = new JTextField(6);
    private JTextField T_StatusAnzeige = new JTextField();
    
    private JButton B_Verbinden = new JButton("Verbinden");
    private JButton B_Suchen = new JButton("Suchen");
    private JButton B_Senden = new JButton("Senden");
    
    private JRadioButton RB_Sender = new JRadioButton("Sender", true);
    private JRadioButton RB_Empfänger = new JRadioButton("Empfänger");
    
    private static JProgressBar PB_Status = new JProgressBar(JProgressBar.HORIZONTAL,0,100);
    private ButtonListener butLis = new ButtonListener();
    public Datentransfer()
    {
        super();
        
        // Variablen Init
        WasBinIch = SENDER;
        SendOrNot = NICHTSENDEN;
        Status = GETRENNT;
        
        // Fenste Einstellungen
        setSize(620, 300);
        setTitle("Datentransfer");
        setVisible(true);
        setResizable(false);
        
        // Pane Einstellungen
        contentPane.setLayout(null);
        
        // Gruppen Einstellungen
        RBGruppe.add(RB_Sender);
        RBGruppe.add(RB_Empfänger);
        
        // Knöpfe & Co.
            //setBounds
        L_Datei.setBounds(10,10,100,25);
        L_DateiAnzeigen.setBounds(50,10,(contentPane.getWidth()-10),25);
        L_ZielIP.setBounds(10,42,120,25);
        L_ZielPort.setBounds(170,42,120,25);
        L_Fortschritt.setBounds(10,100,60,25);
        L_UploadGeschwindigkeit.setBounds(10,150,150,25);
        L_DownloadGeschwindigkeit.setBounds(10,175,150,25);
        L_DLAnzeige.setBounds(170,150,100,25);
        L_ULAnzeige.setBounds(170,175,100,25);
        L_VerbundenMit.setBounds(300,150,150,25);
        L_KontrollHash.setBounds(300,175,150,25);
        L_VMAnzeige.setBounds(460,150,100,25);       
        L_KHAnzeige.setBounds(460,175,100,25);
        
        T_IP.setBounds(75,42,80,25);
        T_Port.setBounds(200,42,50,25);
        T_StatusAnzeige.setBounds(contentPane.getWidth()-10,contentPane.getHeight()-20,10,20);
        
        B_Verbinden.setBounds(10,230,120,25);
        B_Senden.setBounds(140,230,120,25);
        B_Suchen.setBounds(270,230,120,25);
        
        RB_Sender.setBounds(300,30,120,25);
        RB_Empfänger.setBounds(300,55,120,25);
        
        PB_Status.setBounds(75,100,(contentPane.getWidth()-85),25);
        
            //Restliche Einstellungen
        L_DLAnzeige.setHorizontalTextPosition(JLabel.RIGHT);
        L_ULAnzeige.setHorizontalTextPosition(JLabel.RIGHT);
        L_VMAnzeige.setHorizontalTextPosition(JLabel.RIGHT);
        L_KHAnzeige.setHorizontalTextPosition(JLabel.RIGHT);
        
        T_IP.setHorizontalAlignment(SwingConstants.CENTER);
        T_Port.setHorizontalAlignment(SwingConstants.CENTER);
        T_IP.setText("127.0.0.1");
        T_Port.setText("6112");
         T_StatusAnzeige.setEditable(false);
        T_StatusAnzeige.setBackground(Color.RED);
        
        PB_Status.setValue(0);
        
        // ActionListener
        B_Senden.addActionListener(butLis);
        B_Suchen.addActionListener(butLis);
        B_Verbinden.addActionListener(butLis);
        
        RB_Sender.addActionListener(butLis);
        RB_Empfänger.addActionListener(butLis);
                
        // add-en der Komponenten
        add(L_Datei);
        add(L_DateiAnzeigen);
        add(L_ZielIP);
        add(L_ZielPort);
        add(L_Fortschritt);
        add(L_UploadGeschwindigkeit);
        add(L_DownloadGeschwindigkeit);
        add(L_DLAnzeige);
        add(L_ULAnzeige);
        add(L_VerbundenMit);
        add(L_VMAnzeige);
        add(L_KontrollHash);
        add(L_KHAnzeige);
        
        add(T_IP);
        add(T_Port);
        add(T_StatusAnzeige);
        
        add(B_Verbinden);
        add(B_Senden);
        add(B_Suchen);
        
        add(RB_Sender);
        add(RB_Empfänger);
        
        add(PB_Status);
               
        try 
        {       
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } 
        catch (Exception e) 
        {
            
        }
        SwingUtilities.updateComponentTreeUI(contentPane);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    /*
     * ActionListener
     */
    class ButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {            
            /*
             * Was gemacht werden soll falls Sender aktiv ist
             */
            if(e.getSource().equals(RB_Sender))
            {
                T_IP.setEditable(true);
                B_Senden.setEnabled(true);
                setWasBinIch(SENDER);
            }
            // Sender ENDE
            
            /*
             * Was gemacht werden soll falls Empfänger aktiv ist
             */
            if(e.getSource().equals(RB_Empfänger))
            {
                T_IP.setEditable(false);
                T_IP.setText("127.0.0.1");
                B_Senden.setEnabled(false);
                setWasBinIch(EMPFÄNGER);
            }
            // Empfänger ENDE
            
            /*
             * Was gemacht werden soll falls Verbinden gedrückt wird
             */
             if(e.getSource().equals(B_Verbinden))
             {
                 setStatus(VERBINDEN);
                 T_StatusAnzeige.setBackground(Color.ORANGE);                
             }
             // Senden ENDE
            
            /*
             * Was gemacht werden soll falls Senden gedrückt wird
             */
             if(e.getSource().equals(B_Senden))
             {
                 setSendOrNot(SENDEN);                
             }
             // Senden ENDE
             
             /*
              * Was gemacht werden soll falls Suchen gedrückt wird
              */
             if(e.getSource().equals(B_Suchen)) 
             {
                 JFileChooser dateiAuswahl = new JFileChooser("%SystemRoot%");
                 DateiFilter filter1 = new DateiFilter(".exe",".exe Dateien");
                 DateiFilter filter2 = new DateiFilter(".zip",".zip Dateien");
                 DateiFilter filter3 = new DateiFilter(".java",".java Dateien");
                 DateiFilter filter4 = new DateiFilter(".class",".class Dateien");
                 dateiAuswahl.addChoosableFileFilter(filter1); 
                 dateiAuswahl.addChoosableFileFilter(filter2); 
                 dateiAuswahl.addChoosableFileFilter(filter3); 
                 dateiAuswahl.addChoosableFileFilter(filter4); 
        
                 int status = dateiAuswahl.showOpenDialog(B_Suchen);
                 
                 if(status == JFileChooser.APPROVE_OPTION) 
                 {
                     File datei = dateiAuswahl.getSelectedFile();
                 
                     L_DateiAnzeigen.setText(datei.getParent() + "\\" + datei.getName());
                 }
                 else
                 {
                     return; 
                 }
             }
             // Suchen ENDE
         }
         // ActionListener ENDE
    }
    
    /*
     * Set WasBinIch
     */
    public void setWasBinIch(int value)
    {
        WasBinIch = value;
    }
    // setWasBinIch ENDE
    
    /*
     * Get WasBinIch
     */
    public int getWasBinIch()
    {
        return WasBinIch;
    }
    // getStatus ENDE
    
    /*
     * Set Status
     */
    public void setStatus(int value)
    {
        Status = value;
    }
    // getWasBinIch ENDE
    
    /*
     * Get Status
     */
    public int getStatus()
    {
        return Status;
    }
    // getStatus ENDE
    
    /*
     * Set SendOrNot
     */
    public void setSendOrNot(int value)
    {
         SendOrNot = value;
    }
    // setSendOrNot ENDE
    
    /*
     * Get SendOrNot Methode
     */
    public int getSendOrNot()
    {
        return SendOrNot;
    }
    // getSendOrNot ENDE
    
    /*
     * Get IP Methode
     */
    public String getIP()
    {
        return T_IP.getText();
    }
    // getIP ENDE
    
    /*
     * Get Port Methode
     */
    public int getPort()
    {
        return Integer.parseInt(T_Port.getText());
    }
    // getPort ENDE
    
    /*
     * Set ProgressBarTo Methode
     */
    public void setProgressBarTo(int value)
    {
        PB_Status.setValue(value);
    }
    // setProgressBarTo ENDE
    
    /*
     * Main Methode
     */
    public static void main(String[] args)
    {
        Datentransfer fenster = new Datentransfer();
                
        while(true)
        {           
            /*
             * System Luft zum Atmen geben
             */
            try
            {
                Thread.sleep(10);
            }
            catch(Exception ex)
            {
                
            }
            // Luft ENDE
            
            /*
             * Der eigentliche Teil des Programms
             */
            switch(fenster.getStatus())
            {
                case VERBINDEN: /*
                                 * Was getan wird wenn auf verbinden geklickt wurde
                                 */                
                                try
                                {
                                    if(fenster.getWasBinIch() == EMPFÄNGER)
                                    {
                                        hostServer = new ServerSocket(fenster.getPort());
                                        socket = hostServer.accept();
                                        fenster.T_StatusAnzeige.setBackground(Color.GREEN);
                                    }                                    
                                    if(fenster.getWasBinIch() == SENDER)
                                    {
                                        socket = new Socket(fenster.getIP(), fenster.getPort());
                                        fenster.T_StatusAnzeige.setBackground(Color.GREEN);
                                    }
                                    
                                    in  = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                                    out = new PrintWriter(socket.getOutputStream(), true);
                                    fenster.setStatus(VERBUNDEN);                               
                                }
                                catch(IOException IOEx)
                                {
                                    // TODO Fehlerbehandlung
                                }
                                
                                break;
                                // Verbinden ENDE
                                
                case VERBUNDEN: /*
                                 * Was getan wird wenn die Verbindung hergestellt wurde
                                 */                               
                                try
                                {
                                    if(fenster.getWasBinIch() == SENDER)
                                    {
                                        if(fenster.getSendOrNot() == SENDEN)
                                        {
                                            if(sendMsg.length() != 0)
                                            {
                                                out.print(sendMsg);
                                                out.flush();
                                                sendMsg = "";
                                                fenster.setProgressBarTo(100);
                                                fenster.setTitle("Datentransfer - 100%");
                                                fenster.setSendOrNot(NICHTSENDEN);
                                            }
                                        }
                                    }
                                    if(fenster.getWasBinIch() == EMPFÄNGER)
                                    {
                                        if(in.ready())
                                        {
                                            testMsg = in.readLine();
                                            if((testMsg != null) && (testMsg.length() != 0))
                                            {
                                                fenster.setProgressBarTo(Integer.parseInt(testMsg));
                                                fenster.setTitle("Datenübertragung - " + testMsg + "%");
                                            }
                                        }
                                    }
                                }
                                catch(IOException IOEx)
                                {
                                    // TODO Fehlerbehandlung
                                }
                                break;
                                // Verbunden ENDE
            }
            // ENDE
        }
        // ENDE der while(true) Schleife
    }
    // Main ENDE
}
// Eigene Dateifilter-Klasse
class DateiFilter extends javax.swing.filechooser.FileFilter  
{
   private String beschreibung;        
   private String endung; 
   DateiFilter(String endung, String beschreibung) 
   {
      this.endung = endung;
      this.beschreibung = beschreibung;
   }
   public String getDescription() 
   {
      return beschreibung; 
   }
   // Verzeichnisse und Dateien der eingestellten Endung durchlassen
   public boolean accept(File datei) 
   {
      if(datei.isDirectory() == true) 
         return true;
      else 
         return (datei.getName().endsWith(endung)); 
   }
} 
				 
 
		 
 
		 
 
		 
 
		