JackBauer8283
Mitglied
Hi ich sitz schon seit Tage an einem Client/Server Problem. Hab es dank der Forenhilfe auch sehr weit geschafft.
Leider empfängt mein Client nicht das was der Server im sendet. Woran liegt das?
Der Server ließt aus einer Datei Zeilenweise aus, jede Zeile soll an den Client übergeben werden. Warum klappt das nicht?
Danke im Voraus.
Server:
Client:
Leider empfängt mein Client nicht das was der Server im sendet. Woran liegt das?
Der Server ließt aus einer Datei Zeilenweise aus, jede Zeile soll an den Client übergeben werden. Warum klappt das nicht?
Danke im Voraus.
Server:
Code:
import java.awt.*;
import java.io.*;
import java.net.*;
public class Server
{
public static void main(String[] args)
{
try
{
ServerSocket server = new ServerSocket(1234);
while(true)
{
System.out.println("Warte auf Verbindung.");
Socket s = server.accept();
System.out.println("Verbunden.");
(new ServerThread(s)).start();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
class ServerThread extends Thread
{
Socket s;
Socket c;
public ServerThread(Socket s) throws Exception
{
this.s = s;
runServer();
}
void runServer()
{
try
{
c = s;
System.out.println("Befehl lesen.");
befehllesen(c);
}
catch(Exception e)
{
System.out.println("Server error");
}
}
void befehllesen(Socket c)
{
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String empfangen = in.readLine();
String [] enpfangenspliten = empfangen.split("§");
String befehl = enpfangenspliten[0];
String datensatz = enpfangenspliten[1];
String befehlanlegen = "anlegen";
String befehlanzeigen = "anzeigen";
String befehlsuchen = "suchen";
if (befehl.equals(befehlanlegen))
{
System.out.println("Befehl: " + befehl);
System.out.println("Datensatz empfangen: " + datensatz);
BufferedWriter outanlegen = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Pruefplaene.txt", true)));
outanlegen.write(datensatz);
outanlegen.newLine();
outanlegen.flush();
System.out.println("Empfangener Datensatz wurde erfolgreich in die Datei 'Pruefplaene.txt' geschrieben.");
outanlegen.close();
}
else if (befehl.equals(befehlanzeigen))
{
System.out.println("Befehl: " + befehl);
BufferedReader inanzeigen = new BufferedReader(new InputStreamReader(new FileInputStream("Pruefplaene.txt")));
String strAnzeigenLine;
while((strAnzeigenLine = inanzeigen.readLine()) != null)
{
System.out.println(strAnzeigenLine);
BufferedWriter outanzeigen = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
outanzeigen.write(strAnzeigenLine);
outanzeigen.newLine();
outanzeigen.flush();
}
}
else if (befehl.equals(befehlsuchen))
{
System.out.println("Befehl: " + befehl);
BufferedReader inspeichern = new BufferedReader(new InputStreamReader(new FileInputStream("Pruefplaene.txt")));
String strSpeichernLine;
BufferedWriter outSpeichernDatei = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Suchen.txt")));
String leerspeichern = "";
outSpeichernDatei.write(leerspeichern);
outSpeichernDatei.flush();
while((strSpeichernLine = inspeichern.readLine()) != null)
{
System.out.println(strSpeichernLine);
BufferedWriter outsuchen = new BufferedWriter(new FileWriter("Suchen.txt", true));
outsuchen.write(strSpeichernLine);
outsuchen.newLine();
outsuchen.flush();
}
BufferedWriter outsuchen = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
outsuchen.write(datensatz);
outsuchen.newLine();
outsuchen.flush();
outsuchen.close();
}
}
catch(IOException io)
{
io.printStackTrace();
}
}
}
Client:
Code:
package anzeigen;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class Prüfpläneanzeigen extends JFrame
{
String[] Spaltennamen = {"Getriebetyp", "Nummer", "Art", "Dokumentiert", "Prüfmittel", "Messbereich", "Prüfablauf", "Prüfergebnis"};
DefaultTableModel AnzeigenTabelle;
JComponent contentPane = (JComponent) getContentPane();
Prüfpläneanzeigen()
{
super("Alle Prüfpläne anzeigen");
AnzeigenLayout();
ClientThreadanzeigen ctanzeigen = new ClientThreadanzeigen();
}
void AnzeigenLayout()
{
contentPane.setLayout(new BorderLayout());
createAnzeigenMenuleiste();
AnzeigenTabelle = new DefaultTableModel(null, Spaltennamen);
JTable tblAnzeigen = new JTable(AnzeigenTabelle);
tblAnzeigen.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
JScrollPane scrollPane = new JScrollPane(tblAnzeigen);
scrollPane.setPreferredSize(new Dimension(785, 500));
JPanel panelAnzeigenTable = new JPanel();
panelAnzeigenTable.add("Center", scrollPane);
contentPane.add("West", panelAnzeigenTable);
JButton btnAnzeigenOK = new JButton("OK");
btnAnzeigenOK.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
closeAnzeigenWindow();
}
});
JPanel panelAnzeigenButton = new JPanel();
panelAnzeigenButton.add(btnAnzeigenOK);
contentPane.add("South", panelAnzeigenButton);
}
private void createAnzeigenMenuleiste()
{
JMenuBar Anzeigenleiste = new JMenuBar();
JMenu AnzeigenProgramm = new JMenu("Programm");
JMenuItem AnzeigenEnde = new JMenuItem("Beenden");
AnzeigenProgramm.add(AnzeigenEnde);
AnzeigenEnde.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
closeAnzeigenProgramm();
}
});
Anzeigenleiste.add(AnzeigenProgramm);
setJMenuBar(Anzeigenleiste);
}
void closeAnzeigenProgramm()
{
System.exit(0);
}
void closeAnzeigenWindow()
{
this.setVisible(false);
}
public static void Prfanzeigen()
{
Prüfpläneanzeigen Anzeigen = new Prüfpläneanzeigen();
Anzeigen.setLocation(100, 100);
Anzeigen.setSize(800, 600);
Anzeigen.setResizable(false);
Anzeigen.setVisible(true);
}
class ClientThreadanzeigen extends Thread
{
ClientThreadanzeigen()
{
senden();
}
public void senden()
{
try
{
Socket s = new Socket("localhost", 1234);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String anzeigen = "anzeigen§ ";
out.write(anzeigen);
System.out.println("Sende Anzeigebefehl an Server Port 1234.");
out.newLine();
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String gelesen;
gelesen = in.readLine();
System.out.println(gelesen);
//readTable();
//System.out.println("Datensätze erfolgreich in Tabelle ausgegeben.");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException io)
{
io.printStackTrace();
}
}
/* void readTable()
{
try
{
String strAnzeigenLine;
while((strAnzeigenLine = Anzeigenreader.readLine()) != null)
{
String[] AnzeigenSplit = strAnzeigenLine.split(";");
AnzeigenTabelle.addRow(AnzeigenSplit);
}
AnzeigenTabelle.fireTableDataChanged();
JOptionPane.showMessageDialog(null, "Die Datenbank enthält zurzeit " + AnzeigenTabelle.getRowCount() + " Datensätze.", "Information", JOptionPane.INFORMATION_MESSAGE);
}
catch(FileNotFoundException e)
{
JOptionPane.showMessageDialog(null, "Datei 'Pruefplaene.txt' wurde nicht gefunden.", "Fehlermeldung", JOptionPane.ERROR_MESSAGE);
}
catch(IOException e)
{
JOptionPane.showMessageDialog(null, "Sie besitzen keinen Lesezugriff auf die Datei 'Pruefplaene.txt'.", "Information", JOptionPane.INFORMATION_MESSAGE);
}
} */
}
}