如题我的代码是
服务器端
DataInputStream inData;
socket = serverSocket.accept();
inData = new DataInputStream(socket.getInputStream());
outData = new DataOutputStream(socket.getOutputStream());
byte[] b = ("hello world").getBytes();
outData.write(b,0,b.lenth);
客户端是
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
byte[] b ;
ByteArrayOutputStream out1 = new ByteArrayOutputStream();
while (in.available() != 0) {
out1.write(in.read());
}
b = out1.toByteArray();
return new String(b);
输出的string和"hello world"不一样 请高手们指点

解决方案 »

  1.   

    转换的时候有问题
    out   =   new   DataOutputStream(socket.getOutputStream()); 
    in   =   new   DataInputStream(socket.getInputStream()); 
    byte[]   b    = new byte[in.available()]; 
    for(int i = 0;i < b.length;i++){
         b[i] = (byte)in.read();
    }String s = new String(b);
      

  2.   

    不行啊 输出的string还是空的 ...
      

  3.   

    问题解决了 使用 ObjectInputStream.readObject()
      

  4.   

    具体怎么做啊!!!??
    ObjectInputStream.readObject()??
      

  5.   

    估计是服务器还没有写完,或还没有flush()时,你就去读数据了,这时没有数据,所以就你读回了空的字符串,这样可能可以: Thread.sleep(1 * 1000);
    byte[] datas = new byte[dis.available()];
    for(int i=0; i<datas.length; i++){
    datas[i] = (byte)dis.read();
    }
    System.out.println("字符串: " + new String(datas));
    即客户端延时一秒后再来读数据,这样可能就有了数据了.