java如何判断datagramsocket传递的是否是一个对象

ma_wangfy 2010-01-31 09:39:39
如题:java如何判断datagramsocket传递的是否是一个对象
...全文
118 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2010-01-31
  • 打赏
  • 举报
回复
那你可能需要定义自己的简单消息格式,比如第一个字节说明后面消息内容的格式是普通文本还是对象(内容以二进制为主),或者把对象本身也包装成 base64 一样混合成普通数据一起发送(内容以纯文本为主)。

Java ObjectInputStream.readObject0(boolean) 方法里面有关于判断内容的方法,但是它是在假设你肯定是在用 Java Serialization 在发送数据并据此推断内容是什么类型的 Java 对象(字符串,数据,null,Class 等),如果你在发送普通数据时不是用 Java serialization 的方法那就不能用这个办法。换个角度,如果你把普通数据也用 Java Serialization 发送的话,就没有任何问题。
gloomyfish 2010-01-31
  • 打赏
  • 举报
回复
如果想传递一个对象文件,建议你新开一个socket来读写,
一个例子就FTP的实现,FTP的21端口其实是个控制端口,
真正的读写文件的是FTP应用程序的另外端口!

实际上socket永远不会知道你传输的是对象,对象
是你自己定义,socket传输的是字节流,需要你自己做
一些工作来,搞清这一点,你问的问题就不存在。
ma_wangfy 2010-01-31
  • 打赏
  • 举报
回复
再说明一下,客户端先交替发送对象和普通数据到服务器,服务器转发,然后要在客户端接收,客户端接收时要判断,接受的是普通数据还是对象.
ma_wangfy 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 javaalpha 的回复:]
参考

http://www.99inf.net/SoftwareDev/Java/52221.htm
http://tech.e800.com.cn/articles/2009/68/1244423543076_1.html
[/Quote]

这上边只有如何传送对象,没有说明如何判断传送的是对象还是普通数据?
ma_wangfy 2010-01-31
  • 打赏
  • 举报
回复
怎么解决
ma_wangfy 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ma_wangfy 的回复:]
我仔细考虑了一下,觉得可以开两个端口,一个专门接收对象,一个专门接收普通数据,不知道这样可不可行?
[/Quote]

不知道这样会不会引起数据不同步,比如说我先发送一对象,然后将该对象传送到客户端.然后再发送一普通数据,也发送到客户端.然后客户端用接收到的普通数据来操作接收到的对象.不知道普通数据会不会比对象先到,导致操作出错.
ma_wangfy 2010-01-31
  • 打赏
  • 举报
回复
我仔细考虑了一下,觉得可以开两个端口,一个专门接收对象,一个专门接收普通数据,不知道这样可不可行?

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧