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

解决方案 »

  1.   

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

  2.   

    如果想传递一个对象文件,建议你新开一个socket来读写,
    一个例子就FTP的实现,FTP的21端口其实是个控制端口,
    真正的读写文件的是FTP应用程序的另外端口!实际上socket永远不会知道你传输的是对象,对象
    是你自己定义,socket传输的是字节流,需要你自己做
    一些工作来,搞清这一点,你问的问题就不存在。
      

  3.   

    那你可能需要定义自己的简单消息格式,比如第一个字节说明后面消息内容的格式是普通文本还是对象(内容以二进制为主),或者把对象本身也包装成 base64 一样混合成普通数据一起发送(内容以纯文本为主)。Java ObjectInputStream.readObject0(boolean) 方法里面有关于判断内容的方法,但是它是在假设你肯定是在用 Java Serialization 在发送数据并据此推断内容是什么类型的 Java 对象(字符串,数据,null,Class 等),如果你在发送普通数据时不是用 Java serialization 的方法那就不能用这个办法。换个角度,如果你把普通数据也用 Java Serialization 发送的话,就没有任何问题。