| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1764 人关注过本帖
标题:一个关于c#,java 对象序列化的问题!
只看楼主 加入收藏
chadmorrian
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-3-8
收藏
 问题点数:0 回复次数:2 
一个关于c#,java 对象序列化的问题!

在c#里序列化对象后用数据报发送给java程序,希望java把该数据包恢复成原来的对象,java收到了字节流但是怎么无法恢复成原来的对象啊?
似乎是两者不能兼容,为什么啊?


import java.net.*;
import java.io.*;
//定义要还原的类,C#里也有同样的结构
class Message implements{
public int a;
public int b;
}

//简单的服务器程序,负责接受客户端发来的数据报
class aserver{
static DatagramSocket ds;
static DatagramPacket pkt;

public static void main(String args[])
{

Message msg=new Message();
byte[] data=new byte[1024];
//生成数据报套接口
try{
ds=new DatagramSocket(8888);

}catch (Exception e){}
//定义用于反序列化的两个对象
ByteArrayInputStream bis;
ObjectInputStream ois;
//等待接受数据报
System.out.println("Waiting...");
pkt= new DatagramPacket(data, 1024);
while (true)
{
try{

ds.receive(pkt);
//将收到的字节数组打印出来
for(int i=0;i<1024;i++)
{
System.out.print(data[i]+" ");
}
//把收到的数据流转换为对象 似乎就是下面三条出现了异常
bis = new ByteArrayInputStream(pkt.getData());
ois = new ObjectInputStream(bis);
msg = (Message)ois.readObject();
//下面两条在运行中一直没有成功!因为上面产生异常,就跳过了
System.out.println("msg.a="+msg.a);
System.out.println("msg.b="+msg.b);

}catch (Exception e)
{
System.out.println("msg failed!!");
}
}
}
}

除了上面的这个JAVA程序外,另外还有一个c#程序aclient,
aclient没有帖出来.但是
1.aclient程序直接发送字节数组给上面的aserver程序,aclient发送的字节数组能原样受到,
2.发送序列化后自定义的Message类对象时,aserver收到一些非零数据(通过
for(int i=0;i<1024;i++)
{
System.out.print(data[i]+" ");
}
打印到屏幕的);
3.但是收到的字节流还原成Message对象时失败了!

请问c#和java之间的序列化有什么要注意的啊??
为什么明明收到了数据,但是反序列化会失败啊?
c#和java之间的序列化要怎么才能兼容,互相通用呢?

搜索更多相关主题的帖子: java 序列 对象 
2006-04-05 22:33
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
当然不一样,两个不一样的语言实现,C#里面有虚拟机吗?
所以两种语言虽然表面上看上去很像,但是里面却大不一样啊
所以序列化的方法也不一样了,各自有各自实现的方法。
就像两个双胞胎人一样的,你给他们一个题目,它们会得出它们自己的答案,
你让他们签名,他们签的字肯定也是不一样的

可惜不是你,陪我到最后
2006-04-06 10:55
chadmorrian
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-3-8
收藏
得分:0 
事实上跨语言的invocation通过序列化是做不到的,所以人们对XML很感兴趣!
谢谢楼上,我概念上有点错误!
2006-04-06 12:05
快速回复:一个关于c#,java 对象序列化的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019436 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved