Ich weiß das ist wahrscheinlich ein Thema, das so ähnlich schon oft erfragt wurde, aber ich weiß nicht wonach ich suchen soll, einfach weil ich nicht weiß wo der Fehler ist. Ich habe mir aus einigen Tutorials im Internet einen einfachen Client-Server Chat zusammengebastelt.
Füge ich beide auf einem PC aus, so funktioniert alles. Wenn ich aber den Client auf einen anderen PC verfrachte kommt es zu Problemen. Das Fenster wird zwar auf beiden PCs angezeigt (also sie erkennen einander schon), aber auf Clientseite werden im Fenster keinerlei Bedienelement angezeigt und es funktioniert auch weiter nichts.
Wie komme ich da weiter?
PS Für localhost habe ich in dem Fall natürlich die IP Adresse eingesetz
Code Client:
Code Server:
Code Fenster
Füge ich beide auf einem PC aus, so funktioniert alles. Wenn ich aber den Client auf einen anderen PC verfrachte kommt es zu Problemen. Das Fenster wird zwar auf beiden PCs angezeigt (also sie erkennen einander schon), aber auf Clientseite werden im Fenster keinerlei Bedienelement angezeigt und es funktioniert auch weiter nichts.
Wie komme ich da weiter?
PS Für localhost habe ich in dem Fall natürlich die IP Adresse eingesetz
Code Client:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client extends Thread {
public static void main(String[] args) {
try {
new Client().start(); // Client
} catch (Exception e) {
e.printStackTrace();
}
}
myFrame frame;
Socket _Socket = null;
PrintWriter _out = null;
BufferedReader _in = null;
Scanner _keyboard = new Scanner(System.in);
Client() {
try {
_Socket = new Socket("localhost", 4711);
_out = new PrintWriter(_Socket.getOutputStream(), true);
_in = new BufferedReader(new InputStreamReader( _Socket.getInputStream()));
frame = new myFrame("Chat :: Client", _out, _in);
} catch (Exception e) {
System.exit(1);
}
}
public void run() {
while (true) {
String incoming;
try {
incoming = _in.readLine();
frame.addAusgabe(incoming);
} // try
catch (IOException e) {
e.printStackTrace();
}
}
}
}
Code Server:
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyTestServer {
public static void main(String[] args) {
try {
new MyOwnServer().start(); // Server
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyOwnServer extends Thread {
myFrame frame;
ServerSocket _ServerSocket = null;
Socket _ClientSocket = null;
PrintWriter _out = null;
BufferedReader _in = null;
MyOwnServer() throws Exception {
_ServerSocket = new ServerSocket(4711);
}
public void run() {
while (true) {
try {
_ClientSocket = _ServerSocket.accept(); // Warte auf Verbindung
_out = new PrintWriter(_ClientSocket.getOutputStream(), true);// Ausgabestrom
_in = new BufferedReader(new InputStreamReader(
_ClientSocket.getInputStream())); // Eingabestrom
System.out.println("Verbindung steht");
frame = new myFrame("Chat :: Server", _out, _in);
while (true) {
String incoming = _in.readLine();
frame.addAusgabe(incoming);
} // while
} catch (IOException e) {
System.out.println("Fehler - ServerSocket.accept()");
}// catch
}// while
}
}
Code Fenster
Java:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.TextArea;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
class myFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
TextArea _Eingabe;
TextArea _Ausgabe;
JButton _Send;
PrintWriter _out;
BufferedReader _in;
ActionListener _x;
myFrame(String Titel, PrintWriter out, BufferedReader in) {
_out = out;
_in = in;
init(Titel);
}
void init(String Titel) {
setLocation(400, 400);
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
this.setTitle(Titel);
_Eingabe = new TextArea();
_Ausgabe = new TextArea();
_Send = new JButton();
_x = new Action(_out, _in, _Eingabe);
_Send.setText("Abschicken");
_Send.setActionCommand("Send");
_Send.addActionListener(_x);
this.setLayout(new BorderLayout());
Container unten = new Container();
unten.setLayout(new BorderLayout());
unten.add(_Eingabe, BorderLayout.CENTER);
unten.add(_Send, BorderLayout.EAST);
this.add(unten, BorderLayout.SOUTH);
this.add(_Ausgabe, BorderLayout.CENTER);
}
public void addAusgabe(String add) {
String temp = _Ausgabe.getText();
temp += "\n";
temp += add;
_Ausgabe.setText(temp);
}
}