Moinsen,
ich habe ein kleines Problem mit meinen Sockets und den ObjectStreams.
Ich starte ganz normal den Server und den Client, aber sobald er beim Client den ObjectInputStream aus dem server.getInputStream holen soll, bricht er ab, hier mal der Quellcode:
Und hier der Client:
Die System.out.println(); sind drin, damit man gucken kann wann er abbricht, und die 2 gibt er noch aus, die 3 aber nicht mehr! Woran kann das liegen?
Mfg Bodo
ich habe ein kleines Problem mit meinen Sockets und den ObjectStreams.
Ich starte ganz normal den Server und den Client, aber sobald er beim Client den ObjectInputStream aus dem server.getInputStream holen soll, bricht er ab, hier mal der Quellcode:
Java:
/**
*
*/
package server;
import input.Input;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* This class runs the server, which manages the users and their ips.
*
* @author Christoph Englich
*
*/
public class IMServer extends Thread {
int status = 0;
private ServerSocket server = new ServerSocket(3887);
public IMServer() throws IOException {
this.status = 1;
this.start();
String s;
while (status == 1) {
s = Input.rS("Waiting for command:");
if (s.equals("stop")) {
this.status = 0;
} else {
}
}
}
public void run() {
while(status == 1) {
Socket client;
try {
server.setSoTimeout(1000);
client = server.accept();
ObjectInputStream input = new ObjectInputStream (client.getInputStream());
ObjectOutputStream output = new ObjectOutputStream (client.getOutputStream());
String a = (String) input.readObject();
System.out.println(a);
output.writeObject(a);
output.flush();
input.close();
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
IMServer server = new IMServer();
//server.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Und hier der Client:
Java:
/**
*
*/
package client;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
/**
* @author Christoph Englich
*
*/
public class Client {
Socket server;
public Client() throws IOException {
String x = "Bitte \n nach \n Hause \n gehen!";
System.out.println(1);
server = new Socket("localhost", 3887);
System.out.println(2);
ObjectInputStream input = new ObjectInputStream (server.getInputStream());
System.out.println(3);
ObjectOutputStream output = new ObjectOutputStream (server.getOutputStream());
System.out.println(4);
output.writeObject(x);
System.out.println(5);
output.flush();
try {
System.out.println(input.readObject());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
input.close();
output.close();
server.close();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Client client = new Client();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Die System.out.println(); sind drin, damit man gucken kann wann er abbricht, und die 2 gibt er noch aus, die 3 aber nicht mehr! Woran kann das liegen?
Mfg Bodo