Hallo Java-Forum.
Ich möchte ein Objekt in ein Byte[] speichern und dann an den Server schicken.
Client:
Server:
Irgendwo hängt es noch.
Beim Server bekomme ich folgenden Ausgabe:
Also wird ja scheinbar etwas übertragen und auch ins Byte[] geschrieben.
Das Problem ist denke ich dann bei zurück wandeln in ein Object.
Kann jemand helfen?
Danke im Vorraus
Ich möchte ein Objekt in ein Byte[] speichern und dann an den Server schicken.
Java:
import java.io.Serializable;
public class Person implements Serializable {
private String name, vorname;
private int alter;
public Person(String name, String vorname, int alter) {
super();
this.name = name;
this.vorname = vorname;
this.alter = alter;
}
@Override
public String toString() {
return "Person [name=" + name + ", vorname=" + vorname + ", alter="
+ alter + "]";
}
}
Client:
Java:
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket server = null;
try {
server = new Socket("localhost", 8080);
Person p = new Person("Gause", "Gundula", 42);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(baos);
os.writeObject(p);
os.flush();
byte[] ba=baos.toByteArray();
baos.close();
ObjectOutputStream oss = new ObjectOutputStream(server.getOutputStream());
oss.write(ba);
oss.flush();
BufferedReader br=new BufferedReader(new InputStreamReader(server.getInputStream()));
System.out.println(br.readLine());
} finally {
if (server != null) {
server.close();
}
}
}
}
Server:
Java:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8080);
while (true) {
Socket client = null;
try {
client = server.accept();
System.out.println("verbindung aufgebaut");
doSomething(client);
} finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
private static void doSomething(Socket client) throws IOException {
InputStream is=client.getInputStream();
PrintWriter pw=new PrintWriter(client.getOutputStream());
byte[] pb=new byte[1024];
int i;
try {
while((i=is.read(pb))!=-1){
System.out.println("Write "+i+" Bytes.");
}
ByteArrayInputStream bis = new ByteArrayInputStream (pb);
ObjectInputStream ois = new ObjectInputStream (bis);
Person p= (Person) ois.readObject();
System.out.println(p.toString());
pw.write("Erfolg \n");
pw.flush();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
finally{
is.close();
pw.close();
}
}
}
Irgendwo hängt es noch.
Beim Server bekomme ich folgenden Ausgabe:
verbindung aufgebaut
Write 4 Bytes.
Write 112 Bytes.
Also wird ja scheinbar etwas übertragen und auch ins Byte[] geschrieben.
Das Problem ist denke ich dann bei zurück wandeln in ein Object.
Kann jemand helfen?
Danke im Vorraus