Socket 通信的时候 如果我有两数据同时需要服务器接收 一条是普通的String 字符串  另一条是一个序列化的容器   我接收的时候怎么把这两条数据分别取出来?

解决方案 »

  1.   

    1.用ObjectInputStream和ObjectOutputStream传序列化对象
    你可以弄一个通用的类,把这个String或你要传的对象做一个属性,然后再加上一些其它的属性进行描述以便区分
    2.自定义一个通讯协议,在数据包前面加报头描述,然后把要传的数据全都转成byte[]数组进行传输
      

  2.   

    如果是不同的 Socket 发过来的,处理起来也会是分别处理,不需要人工区分;
    如果这两条数据包含在一条消息中,就需要制定一个简单的协议将其区分开来。例如:
    [字符串长度][字符串][序列化长度][序列化内容]
      

  3.   

    你要是同一个socket的话,就用某个标识符去区分这两条例如;号...
    什么的都行
      

  4.   

    答:你什么都不需要。直接用ObjectInputStream来读,然后使用getClass()区分数据,然后从Object类型向下转型(String或 序列化的容器 )。如:ObjectInputStream ois=new ObjectInputStream(。。);
    Object o1=ois.readObject();  //读入一个对象:是String?还是序列化的容器?
    System.out.println(o1.getClass());  //o1.getClass()已区分开来了。若是String,你再向下强转
    Object o2=ois.readObject();  //读入一个对象:是String?还是序列化的容器?
    System.out.println(o2.getClass()); //o1.getClass()已区分开来了。若是序列化的容器,你再向下强转