Hallo liebes Forum! Ich bin neu hier und habe gleich mal eine wichtige Frage an euch. Undzwar habe ich den Chat-Client vom Buch "Java - Von Kopf bis Fuß" nachgebaut, bekomme jetzt aber diesen fehler angezeigt:
den port 4242 und auch 5000 habe ich unter windows 7 per tcp/udp geöffnet, genauso wie beim router.
hier mal der ganze java-code:
TippDesTagesClient.java
EinfacherChatClientA.java
TippDesTagesServer.java
SehrEinfacherChatServer.java
Ich hoffe ihr könnt mir helfen, würde das Programm nämlich echt mal gern ausprobieren. Vielen Dank schon mal im Vorraus!
den port 4242 und auch 5000 habe ich unter windows 7 per tcp/udp geöffnet, genauso wie beim router.
hier mal der ganze java-code:
TippDesTagesClient.java
Java:
import java.io.*;
import java.net.*;
public class TippDesTagesClient {
public void los() {
try {
Socket s = new Socket("http://127.0.0.1", 4242);
InputStreamReader streamReader = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader (streamReader);
String tipp = reader.readLine();
System.out.println("Tipp des Tages: " + tipp);
reader.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
TippDesTagesClient client = new TippDesTagesClient();
client.los();
}
}
EinfacherChatClientA.java
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class EinfacherChatClientA {
JTextField ausgehend;
PrintWriter writer;
Socket sock;
public static void main(String[] args) {
EinfacherChatClientA client = new EinfacherChatClientA();
client.los();
}
public void los() {
JFrame frame = new JFrame ("Lächerlich einfacher Chat-Client");
JPanel hauptPanel = new JPanel () ;
ausgehend = new JTextField(20);
JButton sendenButton = new JButton ("Senden");
sendenButton.addActionListener(new SendenButtonListener());
hauptPanel.add(ausgehend);
hauptPanel.add(sendenButton);
netzwerkEinrichten();
frame.getContentPane().add(BorderLayout.CENTER, hauptPanel);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void netzwerkEinrichten() {
try {
sock = new Socket("http://127.0.0.1", 4242);
writer = new PrintWriter(sock.getOutputStream());
System.out.println("Netzwerkverbindung steht");
} catch (IOException ex) {
ex.printStackTrace();
}
}
private class SendenButtonListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
try{
writer.println(ausgehend.getText());
writer.flush();
} catch(Exception ex) {
ex.printStackTrace();
}
ausgehend.setText("");
ausgehend.requestFocus();
}
}
}
TippDesTagesServer.java
Java:
import java.io.*;
import java.net.*;
public class TippDesTagesServer {
String[] tippListe = {"Essen Sie weniger Chips und Gummibärchen.", "Holen Sie sich die engen Jeans. Nein, Sie sehen darin NICHT dick aus.", "Mit einem Wort: unmöglich!","Seien Sie ehrlich, nur heute. Sagen Sie Ihrem Chef, was sie *wirklich* denken.","Sie sollten wirklich mal wieder zum Friseur gehen..."};
public void los() {
try{
ServerSocket serverSock = new ServerSocket(4242);
while(true) {
Socket sock = serverSock.accept();
PrintWriter writer = new PrintWriter(sock.getOutputStream());
String tipp = getTipp();
writer.println(tipp);
writer.close();
System.out.println(tipp);
}
} catch(IOException ex) {
ex.printStackTrace();
}
} // los() schließen
private String getTipp() {
int zufallszahl = (int) (Math.random() * tippListe.length);
return tippListe[zufallszahl];
}
public static void main(String[] main) {
TippDesTagesServer server = new TippDesTagesServer();
server.los();
}
}
SehrEinfacherChatServer.java
Java:
import java.io.*;
import java.net.*;
import java.util.*;
public class SehrEinfacherChatServer {
ArrayList<PrintWriter> clientAusgabeStröme;
public class ClientHandler implements Runnable {
BufferedReader reader;
Socket sock;
public ClientHandler (Socket clientSocket) {
try {
sock = clientSocket;
InputStreamReader isReader = new InputStreamReader (sock.getInputStream());
reader = new BufferedReader(isReader);
} catch(Exception ex) {ex.printStackTrace();}
} // Konstruktor schließen
public void run() {
String nachricht;
try {
while ((nachricht = reader.readLine()) !=null) {
System.out.println("gelesen: " + nachricht);
esAllenWeitersagen(nachricht);
} // Ende der while-Schleife
} catch(Exception ex) {ex.printStackTrace();}
} // run schließen
} // innere Klasse schließen
public static void main (String[] args) {
new SehrEinfacherChatServer().los();
}
public void los() {
clientAusgabeStröme = new ArrayList<PrintWriter>();
try {
ServerSocket serverSock = new ServerSocket(4242);
while(true) {
Socket clientSocket = serverSock.accept();
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());
clientAusgabeStröme.add(writer);
Thread t = new Thread(new ClientHandler(clientSocket));
t.start();
System.out.println("habe eine Verbindung");
}
// wenn wir hier angelangt sind, haben wir eine Verbindung
}catch(Exception ex) {
ex.printStackTrace();
}
}
public void esAllenWeitersagen(String nachricht) {
Iterator<PrintWriter> it = clientAusgabeStröme.iterator();
while(it.hasNext()) {
try {
PrintWriter writer = (PrintWriter) it.next();
writer.println(nachricht);
writer.flush();
} catch(Exception ex) {
ex.printStackTrace();
}
} // Ende der while-Schleife
} // esAllenWeitersagen schließen
} // Klasse schließen
Ich hoffe ihr könnt mir helfen, würde das Programm nämlich echt mal gern ausprobieren. Vielen Dank schon mal im Vorraus!