Hallo
Ich möchte gerne mehrere Clients mit dem Server verbinden und zwischen diesen Objekte hin und her schicken. Das Problem das ich momentan habe ist, dass sich der erste Client mit dem Server erfolgreich verbindet und auch ein erstes String-Objekte an den Server schickt und dieses String-Objekt auch wieder zurückerhält. Sobald ich aber einen zweiten Client starte bekomme ich eine java.lang.NullPointerException. Ich finde leider den Fehler nirgends. Könnt ihr mir sage was ich übersehe?
******************************************************
******************************************************
Ich möchte gerne mehrere Clients mit dem Server verbinden und zwischen diesen Objekte hin und her schicken. Das Problem das ich momentan habe ist, dass sich der erste Client mit dem Server erfolgreich verbindet und auch ein erstes String-Objekte an den Server schickt und dieses String-Objekt auch wieder zurückerhält. Sobald ich aber einen zweiten Client starte bekomme ich eine java.lang.NullPointerException. Ich finde leider den Fehler nirgends. Könnt ihr mir sage was ich übersehe?
Java:
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
@SuppressWarnings("serial")
public class Client {
//Attribute
Socket socket;
Object inputObject;
ObjectInputStream in;
ObjectOutputStream out;
public static GameObject gObject;
public static int counter = 0;
//Konstruktor
public Client(String hostName, int portNumber) {
connect(hostName, portNumber);
counter++;
sendAndReceiceMessageServer();
}
//Main-Methode
public static void main(String[] args) {
String hostName = "localhost";
int portNumber = 50001;
new Client(hostName, portNumber);
}
//Methoden
public void connect(String hostName, int portNumber) {
try {
//Create a new socket, connect immediately
socket = new Socket(hostName, portNumber);
// Create reader and writer for the socket
in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
String t= "Hallo ich bin der Client";
out.writeObject(t);
out.flush();
}
catch (Exception e) {
}
}
public void sendAndReceiceMessageServer() {
try {
//Read and display the reply from the server
while ((inputObject = in.readObject()) != null) {
if (inputObject instanceof String) {
String ausgabe = (String) inputObject;
System.out.println(ausgabe);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//Clean up
//in.close();
//out.close();
//socket.close();
} catch (Exception e) {
System.out.println(e.toString());
System.exit(1);
}
}
}
******************************************************
Java:
import java.io.IOException;
import java.net.ServerSocket;
public class Server {
public static void main(String[] args) throws IOException{
int portNumber = 50001; // dynamic ports from 49152–65535
try (ServerSocket serverSocket = new ServerSocket(portNumber)) { // create ServerSocket
new ServerThread(serverSocket.accept()).start(); // set up connection and start run method
} catch (IOException e) {
System.err.println("Could not listen on port " + portNumber);
System.exit(-1);
}
}
}
******************************************************
Java:
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
public class ServerThread extends Thread{
//attributes
private Socket socket; // = null;
public static ArrayList<String> ausgabeList = new ArrayList<String>(2);
public static ArrayList<ObjectOutputStream> outlist = new ArrayList<ObjectOutputStream>(2);
//constructor
public ServerThread(Socket socket) {
this.socket = socket;
}
public void run() {
try{
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
out.flush();
outlist.add(out);
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Object inputObject;
//***
try {
while ((inputObject = in.readObject()) != null) {
//String object
if (inputObject instanceof String) {
String ausgabe = (String) inputObject ;
System.out.println(ausgabe);
ausgabe = ausgabe + " und bin jetzt verbunden mit dem Server!";
//ausgabeList.add(ausgabe);
out.writeObject(ausgabe);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}catch (Exception e) {
}
}
catch (Exception e){
}
}
}