Hallo 
Ich versuche neuerdings für mein Spiele eine Art Chat-System zu entwickeln.
Ich bekomme zwar eine Verbindung zwischen Client und (derzeit) localhost hin, aber weiß danach nicht weiter. Ich möchte gerne, dass der Server mir, dem Client, wenn ich connecte, einen String sendet, den ich dann, zum Testen wohlgemerkt, in der Konsole ausgeben lassen kann.
Ich kann nun also alle Verbindungen abfangen und die Input-/OutputStreams davon anzapfen.
Aber wie um alles in der Welt muss ich nun weiter verfahren? Wie bekomme ich es hin, dass der Server über die Streams der Socket einen String an den Client schickt, welchen ich dann abgreifen kann?
Vielen lieben Dank im Voraus,
MFG ~ Lyras
Ich versuche neuerdings für mein Spiele eine Art Chat-System zu entwickeln.
Ich bekomme zwar eine Verbindung zwischen Client und (derzeit) localhost hin, aber weiß danach nicht weiter. Ich möchte gerne, dass der Server mir, dem Client, wenn ich connecte, einen String sendet, den ich dann, zum Testen wohlgemerkt, in der Konsole ausgeben lassen kann.
Java:
//Diese Klasse enthält den Port und den Host
package com.lyras.server.connection;
public class Connection {
private static String host = "127.0.0.1";
private static int port = 81;
public static String getHost () {
return Connection.host;
}
public static int getPort () {
return Connection.port;
}
}
[Meine Client-Klasse]
package com.lyras.server.connection;
import java.net.Socket;
public class Client {
private static Socket socket;
public static Socket getSocket () {
return Client.socket;
}
public static void connect () {
try {
Client.socket = new Socket ( Connection.getHost() , Connection.getPort() );
System.out.println( "[Client] Trying to connect to host '" + Connection.getHost() + "' on port '" + Connection.getPort() + "'." );
Server.addConnection();
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
public static void disconnect () {
try {
if ( Client.socket != null ) Client.socket.close();
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
}
[Meine Server-Klasse]
package com.lyras.server.connection;
import java.net.ServerSocket;
import java.util.ArrayList;
public class Server {
private static ServerSocket socket;
private static ArrayList < ConnectionThread > connections;
public static void start () {
try {
Server.connections = new ArrayList < ConnectionThread > ();
Server.socket = new ServerSocket( Connection.getPort() );
System.out.println( "[Server] Unlocked port '" + Connection.getPort() + "'." );
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
public static void stop () {
try {
if ( Server.socket != null ) {
Server.socket.close();
System.out.println( "[Server] The server has been shut down." );
}
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
public static void addConnection () {
try {
Server.connections.add( new ConnectionThread( Server.socket.accept() ) );
System.out.println( "[Server] Server added connection." );
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
}
//Bei jeder neuen Verbindung wird eine neue Instanz erstellt
[Meine ConnectionThread-Klasse]
package com.lyras.server.connection;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;
public class ConnectionThread extends Thread {
private Socket socket;
private DataInputStream input;
private PrintStream output;
public ConnectionThread ( Socket socket ) {
try {
this.socket = socket;
//input = InputStream von der Socket
this.input = new DataInputStream( this.socket.getInputStream() );
this.output = new PrintStream ( this.socket.getOutputStream() );
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
public DataInputStream getInputStream () {
return this.input;
}
public PrintStream getOutputStream () {
return this.output;
}
public void run () {
try {
//hier sollen dann evtl. Sachen abgewickelt werden
//Bitte nicht drum kümmern ;)
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
}
Ich kann nun also alle Verbindungen abfangen und die Input-/OutputStreams davon anzapfen.
Aber wie um alles in der Welt muss ich nun weiter verfahren? Wie bekomme ich es hin, dass der Server über die Streams der Socket einen String an den Client schickt, welchen ich dann abgreifen kann?
Vielen lieben Dank im Voraus,
MFG ~ Lyras