就是把一个int + int + char 的流拆分成两个int 和一个char

解决方案 »

  1.   

    老板让我把从socket得到的stream拆分成两个int和一个char,并且能把两个int和一个char打包成stream, 你说如何处理呢?
      

  2.   

    一个比较麻烦但是管用的办法:用ObjectStream,将两个int和char转化为String类型先,然后放入一个ArrayList,再将这个ArrayList放入ObjectStream,然后取出时得到这个ArrayList,再取出三个String,再转化回两个int和一个char即可
      

  3.   

    ObjectOutputStream.PutField类有static put(String name, int val) 
    static put(String name, char val) ,两个方法
    ObjectInputStream.GetField类有static get(String name,int val)
    static get(String name ,char val)两个方法用这两个方法看看吧我没试过
      

  4.   

    没有分隔符就难办了,无法分出是第一个和第二个int,
      

  5.   

    各位老大,服务器是用c语言的程序,我写客户端用socket得到流,这样能行吗?
      

  6.   

    应该没有问题,都是二进制流。但是没有分隔符怎么确定第一个和第二个int啊?!
      

  7.   

    使用分隔符或者规定int所占的"字符"(注意:非字节以便在c++/java通用)长度期间要注意的问题是,可能会需要在c中进行unicode字符的转化,即将接受到的数据转为wchar再进行处理,因为java中都是unicode啊
    ……
      

  8.   

    int 是4个字节,我想先读头一个int行吗?程序如下:
                  int bytes_read;
           byte[] byteArray = new byte[4];
           in = new DataInputStream(socket.getInputStream());
           if ( (bytes_read = in.read(byteArray)) != -1) 怎么好像没读进来呢?
      

  9.   

    为什么没有错误提示呢?编译没问题。
          byte[] byteArray = new byte[4];
          int bytes_read;
        try{
          Socket socket = new Socket("192.168.3.59",7001);
          System.out.println(socket);
          DataInputStream in = null;
          in = new DataInputStream(socket.getInputStream());
          if(in == null){
            System.out.println("in is null");
          }
          else{
            System.out.println("in is not null");
          }
          if ( (bytes_read = in.read(byteArray)) != -1) {
          }
        }catch(Exception wrong1){
          System.out.println(wrong1);
        }
    为什么运行到bytes_read = in.read(byteArray)) 就死了呢?什么原因呢?