Hallo,
ich habe mich heute damit beschäftigt einen Java Chat zu programmieren.
Danke einer Anleitung in netzt hat es soweit auch Funktioniert auf meinem PC.
Dafür habe ich die Klassen Server und ein Chatter.
Chatter sendet an den Server die Daten:
Jedoch habe ich mein Projekt an einen Freund geschickt um zu testen ob es auch über das Internet klappt.
Leider gab es nur die Fehlermeldung:
java.net.ConnectException: Connection timed out: connect
Nun wo ist der Wurm in meinem Code?
Und als 2. Frage: Wenn ich in das Eingabefeld etwas schreibe und dann auf "senden" klicke so erscheint es beim Server erst nach dem 2 klick. Woran kann das liegen.
Vielen Dank!
Chatter:
Server
ich habe mich heute damit beschäftigt einen Java Chat zu programmieren.
Danke einer Anleitung in netzt hat es soweit auch Funktioniert auf meinem PC.
Dafür habe ich die Klassen Server und ein Chatter.
Chatter sendet an den Server die Daten:
Jedoch habe ich mein Projekt an einen Freund geschickt um zu testen ob es auch über das Internet klappt.
Leider gab es nur die Fehlermeldung:
java.net.ConnectException: Connection timed out: connect
Nun wo ist der Wurm in meinem Code?
Und als 2. Frage: Wenn ich in das Eingabefeld etwas schreibe und dann auf "senden" klicke so erscheint es beim Server erst nach dem 2 klick. Woran kann das liegen.
Vielen Dank!
Chatter:
Java:
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.event.*;
public class Chatter extends JFrame implements Runnable{
private Socket socket = null;
private PrintWriter schreiber = null;
private BufferedReader leser = null;
private JPanel contentPane;
private JTextField txtEingabe;
private JTextPane txtAusgabe;
public static void main(String[] args) {
Chatter frame = new Chatter();
frame.setVisible(true);
frame.start();
}
public Chatter(){
String ipAddresse = (String)JOptionPane.showInputDialog(
this,
"IP Addresse Eingeben",
"IP Addresse!",
JOptionPane.PLAIN_MESSAGE,
null,
null,
"localhost");
if ((ipAddresse != null) && (ipAddresse.length() > 0)) {
try {
socket = new Socket(ipAddresse , 4701);
schreiber = new PrintWriter(socket.getOutputStream(), true);
leser = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (Exception e) {
JOptionPane.showMessageDialog(this,
"Fehler: " + e,
"Fehler",
JOptionPane.WARNING_MESSAGE);
System.exit(1);
} // catch
}else{
JOptionPane.showMessageDialog(this,
"Fehler Pogramm wird Beendet",
"Fehler",
JOptionPane.WARNING_MESSAGE);
System.exit(1);
}
setTitle("Chat Fenster");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 367);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel pEingabeContainer = new JPanel();
contentPane.add(pEingabeContainer, BorderLayout.SOUTH);
pEingabeContainer.setLayout(new BorderLayout(0, 0));
txtEingabe = new JTextField();
pEingabeContainer.add(txtEingabe);
txtEingabe.setColumns(10);
JButton btnSenden = new JButton("Senden");
pEingabeContainer.add(btnSenden, BorderLayout.EAST);
btnSenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String Ausgabe = txtEingabe.getText()+ "\n";
schreiber.print(Ausgabe);
schreiber.flush();
// txtEingabe.setText(null);
}
});
JScrollPane cpAusgabeContainer = new JScrollPane();
contentPane.add(cpAusgabeContainer, BorderLayout.CENTER);
txtAusgabe = new JTextPane();
txtAusgabe.setEnabled(false);
cpAusgabeContainer.setViewportView(txtAusgabe);
setVisible(true);
start();
} //Chatter
public void start(){
Thread thread = new Thread(this);
thread.start();
}
public void run(){
while(true){
String incoming;
try {
incoming = leser.readLine();
txtAusgabe.setText(txtAusgabe.getText() + incoming);
} //try
catch (IOException e) {
e.printStackTrace();
}
} //while
}
}
Server
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class Server extends JFrame implements Runnable{
private JPanel contentPane;
private ServerSocket serverSocket = null;
private Socket clientSocket = null;
private PrintWriter ausgabeStream = null;
private BufferedReader eingabeStream = null;
private JTextPane txtAusgabe;
public static void main(String[] args) {
Server frame = new Server();
frame.setVisible(true);
frame.start();
//new Chatter();
}
/**
* Create the frame.
*/
public Server() {
try{
serverSocket = new ServerSocket(4701);
}catch (Exception e){
System.out.println(e);
System.exit(0);
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.SOUTH);
JScrollPane cpAusgabe = new JScrollPane();
contentPane.add(cpAusgabe, BorderLayout.CENTER);
txtAusgabe = new JTextPane();
cpAusgabe.setViewportView(txtAusgabe);
}
public void start(){
Thread thread = new Thread(this);
thread.start();
}
public void run(){
System.out.println("EEE");
boolean running = true;
// while(running){
System.out.println("EEE");
try {
clientSocket = serverSocket.accept(); // Warte auf Verbindung
ausgabeStream = new PrintWriter(clientSocket.getOutputStream(),true);// Ausgabestrom
eingabeStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // Eingabestrom
while(running){
String incoming = eingabeStream.readLine();
incoming = eingabeStream.readLine();
System.out.println(incoming +"1");
txtAusgabe.setText(txtAusgabe.getText() + incoming);
System.out.println("EEE");
}
} catch (Exception e){
System.out.println("Fehler - ServerSocket.accept()");
}//catch
// }//while
}
}