作者sbrhsieh (偶尔想摆烂一下)
看板java
标题Re: [问题] 用socket传object
时间Thu Dec 3 20:26:13 2009
※ 引述《InitialShuk (Shuk)》之铭言:
: server先执行 在client
: server:
: public class s {
: public static void main(String[] args) {
: try {
: ServerSocket _port=new ServerSocket(9876);
: Socket _sock=_port.accept();
: ObjectInputStream _ois=new ObjectInputStream(_sock.getInputStream());
: System.out.println(_ois.readUTF());
: Object _one=_ois.readObject();
: System.out.println("e");
: person _per=(person) _one;
: System.out.println(_per.getID());
: } catch (Exception e) {e.printStackTrace();}
: }
: public class person implements Serializable{/*跟client的一起贴在下面*/}
: }
: client:
: public class c implements Serializable{ <===注一
: public static void main(String[] args) {
: new c().go();}
: public void go(){
: try {
: Socket _sock=new Socket("127.0.0.1",9876);
: ObjectOutputStream _oos=new ObjectOutputStream(_sock.getOutputStream());
: person _per=new person("111","222","333","444");
: _oos.writeUTF("123");
: _oos.flush();
: _oos.writeObject(_per);
: _oos.flush();
: } catch (IOException e) {e.printStackTrace();}
: }
: public class person implements Serializable{/*跟server的一起贴在下面*/}
: }
: 各自有相同的class :person (getter setter省略)
: public class person implements Serializable{
: private static final long serialVersionUID = 1L;
: public String ID;
: public String name;
: public String PN;
: public String Email;
: public person(String _temp1,String _temp2,String _temp3,String _temp4){
: this.ID=_temp1;
: this.name=_temp2;
: this.PN=_temp3;
: this.Email=_temp4;
: }
: }
: -----------------------
Server site 的 s.person 与 client site 的 c.person 是两个不同的 class。
你不能够让 c.person object 做 serialization 後传到 server site 直接变成
s.person object。
你的程式码中还牵涉到 non-static inner class 的一些细节,导致情况变的复杂
到你目前没有办法 handle。
我建议你写一个 top level class: Person
编译好产出的 Person.class 部署到 server 与 client 两方(不要 server/client
各写一份 Person.java)。
然後按照类似你原来的流程去做物件的传输。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.131.1
1F:推 InitialShuk:了解...冏 12/03 20:27
2F:→ sbrhsieh:class s/class c 都不需要 implements Serializable. 12/03 20:28
3F:→ InitialShuk:非常感谢<(_ _)> 盲点真的让人冏 12/03 20:30