java1.3中的新类Buffer实例只能包含基本类型。在一非阻塞套接字程序中,如果想要传送一个自定义的对象,那么首先要使这个对象能序列化成网络字节流,根据java的要求,在实现Serializable接口后要添加两个函数 private void writeObject(ObjectOutputStrem out) throws IOException{}
和private void readObject(ObjectInputStream in) throws IOException ,ClassNotFoundException{}
现在我想知道如何把一个数据报(含各种类型的数据) 序列化成一个字节流后放入ByteBuffer?

解决方案 »

  1.   

    1,和非阻塞没关系2,传对象只是一种生机制,你最好应用一些相对稳定的机制,如RMI3,ObjectOutputStrem 一般是套在OutputStream里使用4,以文件的方式是转ByteBuffer肯定没问题吧,HOHO,就是苯了点
      

  2.   

    RMI比较复杂了点。
    还有我要传送的是一个自定义的类的对象,不是文件。
    非阻塞Socket用的缓冲区是java.nio.Buffer,而不是一般的流,所以不知道怎么把ObjectStream或OutPutStream和ByteBuffer这样的东西结合起来?
      

  3.   

    一个Buffer实例仅能包含属于Java的基本数据类型,如下
    ByteBuffer
    CharBuffer
    DoubleBuffer
    FloatBuffer
    IntBuffer
    LongBuffer
    ShortBuffer
    这样的话如果传送的是一个自己定义的对象,该如何呢?
      

  4.   

    这个问题解决了。直接往ByteBuffer里面put。她提供了各种 put函数,可以查API。然后就 write(Buffer),read(Buffer)了。好像不需要用序列化。