问一下各位高手,JAVA里的Socket类可不可以传输自定义的对象。如果不行要用什么传输啊!!!! 问一下各位高手,JAVA里的Socket类可不可以传输自定义的对象。如果不行要用什么传输啊!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵!!我不清楚!但是对象要是要在网络上传输就要进行串行化就可以了吧!让你想要传输的对象实现Serializable接口就可以了吧!在J2EE里面是这样的,不知道对你有没有帮助!说的不对不要用转头啊!! ^_^ 可以首先,要传的对象类型应该implements Serializable 然后,ObjectOututStream的writeObject, ObjectInputStream的readObject 将对象串行化,接收之后再并行化就可以了,对象必须实现Serializable接口。 建设看一下 think in java 里边有一单元是讲这个问题的 最低要求是 实现 java.io.Serializable 接口, readObject & writeObject 如果没有的话, JVM 有默认的实现途径, 如果自己写 readObject & writeObject 要保证该写得都写了,也不要重复写而浪费时间和带宽,因为同一对象可能被多个地方引用了而被写出多次, 可以用一个 IdentityHashMap 或者 System.identityHashCode(obj) 跟踪已经写过的。 然后 添加 private static final long serialVersionUID = XXXXXXXXXXXXL ;以保证Socket 2 端虚拟机在自己的类库中找到的版本不同时也能认为他们是同一个东西 (比如 一段用的类库和另一端稍有不同,版本升级了之后 , 两边的这个UID 一样就行)。新的 Eclipse 3 在 一个类 直接实现java.io.Serializable 或继承实现了 java.io.Serializable 的类没有提供 serialVersionUID 时 会给出警告 , 就源自于此。 humanity你说的我看不懂,呵呵,我是刚学JAVA比较菜。我是用的是JB9,我要传输的那个对象没有任何定义方法(相当于一个结构),不过数据成员的有一项是个数组(String类型)。而且我将所有的数据成员均定义为public。我已经将这个要传输的对象实现了Serializable接口。我想问一下高手这样接收和发送行吗?//socket是个Socket类型的对象ObjectOutputStream output=new ObjectOutputStream(socket.getOutputStream);ObjectInputStream input=new ObjectInputStream(socket.getInputStream);output.WriteObject(topacket);//topacket是那个要传输的对象Packet receivePacket=null;//Packet这个类实现了Serializable接口,是要传输的类receivePacket=input.readObject(); 如果在同一个 应用程序中的话, 不会有问题,但是如果 Socket 两端是不同的 JVM 的话, 可能提示类找不到,就要提供 private static final long serialVersionUID = XXXXXXXXXXXXL .两边的类即使一个版本 1.2 , 一个 1.3 ,但是 上面这个UID 是一样的话, JVM 也会认为是同个东西. JAVA DOM方式操作XML疑问? 有趣的问题,求教 Java 代码 java中怎么得到一个变量所在的行号?? 线程同步及waite问题,谢谢! 关于tomcat的映射地址问题! 子类中重写父类的方法,是否可以修改其返回值? 一个Applet问题,急,请大家解答,100分 怎样向已存在的文本文件中添加信息,而不影响原有信息? 有哪位大神帮写一个,蟹蟹 ibatis小问题? 请问java 修改主机ip的方法
让你想要传输的对象实现Serializable接口就可以了吧!在J2EE里面是这样的,
不知道对你有没有帮助!说的不对不要用转头啊!! ^_^
首先,要传的对象类型应该implements Serializable
然后,ObjectOututStream的writeObject, ObjectInputStream的readObject
以保证Socket 2 端虚拟机在自己的类库中找到的版本不同时也能认为他们是同一个东西 (比如 一段用的类库和另一端稍有不同,版本升级了之后 , 两边的这个UID 一样就行)。
新的 Eclipse 3 在 一个类 直接实现java.io.Serializable 或继承实现了 java.io.Serializable 的类没有提供 serialVersionUID 时 会给出警告 , 就源自于此。
我想问一下高手这样接收和发送行吗?//socket是个Socket类型的对象
ObjectOutputStream output=new ObjectOutputStream(socket.getOutputStream);
ObjectInputStream input=new ObjectInputStream(socket.getInputStream);
output.WriteObject(topacket);//topacket是那个要传输的对象
Packet receivePacket=null;//Packet这个类实现了Serializable接口,是要传输的类
receivePacket=input.readObject();
但是如果 Socket 两端是不同的 JVM 的话, 可能提示类找不到,
就要提供 private static final long serialVersionUID = XXXXXXXXXXXXL .
两边的类即使一个版本 1.2 , 一个 1.3 ,但是 上面这个UID 是一样的话,
JVM 也会认为是同个东西.