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));
}
}