R
Ramulen
Gast
Hallo alle zusammen.
Ich wollte ein kleines Spielchen programmieren. Diesmal sollte es aber nur per Server/Client funktionieren.
Hab mir mal 2 Klassen gebastelt.
EchoServer und EchoClient. Die funktionieren auch so weit. Das Problem ist nur, wenn ich den Server starte macht der NIX mehr. Er wartet und wartet als auf Eingaben des Clienten. Wenn ich was Eintippe(im Client) funzt das auch.
Nur möchte ich gerne das ein Spieler den Server startet und dann auch noch spielen kann.
Bisher gibt der Server nicht mal nen System.our.println("asdasd") aus, falls es hinter der "Eröffnung" des Servers steht.
Kann man ueberhaupt so etwas mit nem Echoserver realisieren ?
Wie gesagt ich möchte das ein Spieler den Server startet und der andere Spieler dann ueber die IP des Servers Verbindung aufnimmt.
Mal mein Code:
EchoServer:
EchoClient:
Ich wollte ein kleines Spielchen programmieren. Diesmal sollte es aber nur per Server/Client funktionieren.
Hab mir mal 2 Klassen gebastelt.
EchoServer und EchoClient. Die funktionieren auch so weit. Das Problem ist nur, wenn ich den Server starte macht der NIX mehr. Er wartet und wartet als auf Eingaben des Clienten. Wenn ich was Eintippe(im Client) funzt das auch.
Nur möchte ich gerne das ein Spieler den Server startet und dann auch noch spielen kann.
Bisher gibt der Server nicht mal nen System.our.println("asdasd") aus, falls es hinter der "Eröffnung" des Servers steht.
Kann man ueberhaupt so etwas mit nem Echoserver realisieren ?
Wie gesagt ich möchte das ein Spieler den Server startet und der andere Spieler dann ueber die IP des Servers Verbindung aufnimmt.
Mal mein Code:
EchoServer:
Code:
import java.net.*;
import java.io.*;
public class EchoServer {
public EchoServer() throws IOException {
ServerSocket serverSocket = null;
int port=1100;
try {
serverSocket = new ServerSocket(port);
} catch (IOException e) {
System.err.println("port " + port + "ist belegt");
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Fehler bei der Annahme der Verbindung");
System.exit(1);
}
PrintWriter zumClient = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader vomClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String ein;
zumClient.println("Hallo, hier ist der Echo-Server");
while ((ein = vomClient.readLine()) != null) {
zumClient.println("Vom Server " + ein);
}
zumClient.close();
vomClient.close();
clientSocket.close();
serverSocket.close();
}
}
EchoClient:
Code:
import java.io.*;
import java.net.*;
public class EchoClient {
static PrintWriter zumServer;
public EchoClient() throws IOException {
Socket echoSocket = null;
zumServer = null;
BufferedReader vomServer = null;
// JOptionPane op = new JOptionPane();
// String hostname = op.toString();
String hostname="localhost";
System.out.println("HOST: "+hostname);
try {
echoSocket = new Socket(hostname,1100);
zumServer = new PrintWriter(echoSocket.getOutputStream(), true);
vomServer = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
} catch (UnknownHostException ausnahme) {
System.err.println("Host : "+ hostname + "unbekannt");
System.exit(1);
} catch (IOException fehler) {
System.err.println("Kann keine IO-Verbindung zu" + hostname + "herstellen");
System.exit(1);
}
BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
String tastatureingabe;
String nachricht = vomServer.readLine();
System.out.println(nachricht);
while ((( tastatureingabe = ein.readLine()) != null) && (!tastatureingabe.equals("bye"))){
if ( tastatureingabe.equals("Timo")){
zumServer.println("HALLO MEIN MEISTER !!!");
nachricht = vomServer.readLine();
System.out.println("Echo :" + nachricht);
}
else {
zumServer.println(tastatureingabe);
nachricht = vomServer.readLine();
System.out.println("Echo :" + nachricht);
}
}
if ( tastatureingabe.equals("bye"))
zumServer.println("bye");
zumServer.close();
vomServer.close();
echoSocket.close();
}
}