R
red99
Gast
Ich habe eine kleine Client Server Applikation geschrieben. Man schickt mit eine Nachricht zum Server der fügt etwas an und schickt sie dann wieder zurück.
Jedoch bleibt es bei if((line = input.readLine()) != null) immer hängen und empfängt den inputstream vom server nicht.
Bitte helft mir. :?:
Schon mal vielen Dank für Eure Hilfe
Code:
import java.net.*;
import java.io.*;
public class KleinerServer2 {
ServerSocket server = new ServerSocket(4444);
private String str;
KleinerServer2() throws IOException{
while(true){
Socket client = server.accept();
BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
while ((str = input.readLine()) != null){
System.out.println(str);
output.write("Zeile [" + str + "] gsendet.\r\n");
output.flush();
}
input.close();
output.close();
}
}
public static void main(String[] argv){
try {
KleinerServer2 server = new KleinerServer2();
}
catch(IOException e){
System.out.println(e);
}
}
}
Code:
import java.net.*;
import java.util.*;
import java.util.Timer;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class KleinerClient
extends JFrame implements ActionListener{
private static JTextArea Ein; private JTextField Aus; private JButton Senden;
private String line;
private static Socket server = null;
private BufferedReader input;
private BufferedWriter output;
private Timer timer = new Timer();
private TimerTask task = null;
private int i;
KleinerClient() throws IOException{
super ("Client");
try {
server = new Socket ("localhost",4444);
input = new BufferedReader(new InputStreamReader(server.getInputStream()));
output = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));
} catch (IOException ioe) {
ioe.printStackTrace();}
JPanel Platte = new JPanel();
Platte.setLayout(new FlowLayout());
Ein = new JTextArea("");
Ein.setPreferredSize(new Dimension(380, 300));
//Ein.setBackground(Color.white);
Ein.setEditable(false);
Ein.setBorder(BorderFactory.createBevelBorder(1));
Aus = new JTextField("",28);
Senden = new JButton ("Senden");
Senden.addActionListener(this);
Platte.add(Ein);
Platte.add(Aus);
Platte.add(Senden);
setContentPane (Platte);
startTimer();
}
public static void main (String[] argv){
try{
KleinerClient client = new KleinerClient();
client.setSize(450,380);
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
client.setVisible(true);
Ein.setText("Connected to " + server.getInetAddress() + ":"
+ server.getPort() + "\r\n");
}
catch(IOException e){
System.out.println(e);
}
}
public void actionPerformed(ActionEvent Ereignis) {
Object Quelle = Ereignis.getSource();
if (Quelle == Senden)
{
try {
line = Aus.getText();
if ((line != null) && (!line.equals("exit")))
{
output.write(line + '\n');
output.flush();
Aus.setText("");
}
else
{
output.write(line + '\n');
output.flush();
Aus.setText("");
Ein.setText(Ein.getText() + "Verbindung geschlossen.\r\n");
task.cancel();
task = null;
server.close();
// System.exit(1);
}
} catch (IOException ioe) {
System.err.println("Verbindung zum Client nicht geschlossen!");
ioe.printStackTrace();
}
}
}
public void startTimer()
{
if (task == null)
{
task = new TimerTask() {
public void run()
{
i++;
System.out.println(i);
try {
if((line = input.readLine()) != null)
{
Ein.setText(Ein.getText() + line + "\r\n");
}
else
{
Ein.setText(Ein.getText() + "Kein Rücksignal.");
/*server.close();
System.exit(1);*/
}
} catch (IOException ioe) {
Ein.setText(Ein.getText() + "Fehler");
ioe.printStackTrace();
}
}
};
timer.schedule(task, 0, 1);
}
else
{
task.cancel();
task = null;
}
}
}
Jedoch bleibt es bei if((line = input.readLine()) != null) immer hängen und empfängt den inputstream vom server nicht.
Bitte helft mir. :?:
Schon mal vielen Dank für Eure Hilfe