Hallo, ich schreibe momentan einen Client für einen Kalender, der auf einem Server LinkedLists speichern soll. Doch beim Erstellen des Clientobjekts wird der ObjectInputStream nicht geöffnet. Wirft aber keine Exceptions oder so.
Hier der Code der Clientklasse:
Und hier die Serverklasse:
Hier der Code der Clientklasse:
Java:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.LinkedList;
import java.util.Scanner;
public class Client {
private String host;
private int port;
private String name;
private Calendar cal = new Calendar();
private ObjectOutputStream out;
private Socket server;
private ObjectInputStream in;
public Client(String h, int p){
host = h;
port = p;
try {
System.out.println("im try catch");
server = new Socket(host, port);
System.out.println("new socket");
out = new ObjectOutputStream(server.getOutputStream());
System.out.println("output stream");
in = new ObjectInputStream(server.getInputStream());
System.out.println("input stream");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Client(){
}
public void send(Object m){
try {
out.writeObject(m);
Object o = in.readObject();
if(o == null){
startGUI();
}
else {
if(o instanceof LinkedList){
System.out.println("Terminliste von Server empfangen!");
cal.setList((LinkedList<Date>)o);
startGUI();
}
if(o instanceof Integer){
if(o.equals(1)){
System.out.println("Liste erfolgreich vom Server empfangen");
}
}
}
out.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void startGUI(){
System.out.println("GUI wird gestartet...");
GuiCal a = new GuiCal();
a.setVisible(true);
}
public int getPort(){
return port;
}
public String getHost(){
return host;
}
public static void main(String[] args) {
Client temp = new Client();
System.out.println("Bitte geben Sie die Server IP ein: ");
Scanner scanIP = new Scanner(System.in);
temp.host = scanIP.nextLine();
System.out.println("Bitte geben Sie den Port ein: ");
Scanner scanPort = new Scanner(System.in);
temp.port = scanPort.nextInt();
String ip = temp.host;
int port = temp.port;
Client c = new Client(ip, port);
System.out.println("Login Name: ");
Scanner scanName = new Scanner(System.in);
c.name = scanName.nextLine();
c.send(c.name);
}
}
Und hier die Serverklasse:
Java:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;
public class Server {
int port = 8888;
ServerSocket socket;
HashMap<String, Calendar> hashmap = new HashMap<String, Calendar>();
public Server () {
try {
socket = new ServerSocket(port);
// Calendar calendar = new Calendar();
System.out.println("Server gestartet...");
} catch (IOException e) {
e.printStackTrace();
}
while(true){
listen();
}
}
public static void main(String[] args) {
new Server();
}
public void listen(){
try {
Socket client = socket.accept();
ObjectInputStream in = new ObjectInputStream(client.getInputStream());
Object o =in.readObject();
ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
if(o instanceof String){
out.writeObject(hashmap.get((String)o));
}
else {
if (o instanceof LinkedList){
System.out.println("Der Client sendet eine Liste...");
LinkedList<Date> list = new LinkedList<Date>();
list = (LinkedList<Date>)o;
out.writeObject(1);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean nameVorhanden(String calname){
if(hashmap.get(calname)==null){
return false;
}
else{
return true;
}
}
}
Zuletzt bearbeitet: