客户端和服务器端都用DataInputStream(Is)和DataOutputStream(Os)方式定义输入输出流,不妨分别定义为DIS和DOS,二进制流的发送时可用DOS.write()方法,接收用DIS.read()方法。比如
DOS.write(msgbuf,0,msgLen);//msgbuf为byte[]型待发二进制数组信息,0为起始发送点即msgbuf[0],msgLen为发送长度,即这句为将msgbuf[0]到msgbuf[msgLen]之间的二进制数据发送出去。
同样
int lengTh = DIS.read(dataBuf);//dataBuf为自定义足够长度的byte[]类型,用于存储接收二进制信息,如果有信息来到,则存在dataBuf数组内,整个信息长度为lengTh,如果没有信息,则lengTh返回-1;整个接收处理完毕后lengTh也会置-1。

解决方案 »

  1.   

    忘了写Is和Os的声明了……
    InputStream Is;
    OutputStream Os;
    Socket sck = new Socket(sckIp,Port);
    Is=sck.getInputStream();
    Os=sck.getOutputStream();
      

  2.   

    差点忘了给出Is和Os的声明,下面给个客户端的,服务器端除socket不同外其它一样。
    Socket sck;
    DataInputStream DIS;
    DataOutputStream DOS;
    sck = new Socket(sckIp,Port);//客户端
    Is=sck.getInputStream();
    Os=sck.getOutputStream();
    DIS=new DataInputStream(Is);
    DOS=new DataOutputStream(Os);
      

  3.   

    在 DOS.write() 之前能不能读出二进制数据,并显示这个二进制数据。
      

  4.   

    printByteArray( msgbuf );DOS.write(msgbuf,0,msgLen);至于怎么打印,自己写啦,java好像没有提供现成的。
      

  5.   

    在DOS.write之前如果没有用其它类似的方法
    即你没有将信息接收并用一个数组变量来存储
    从什么地方读出二进制数据并显示这个二进制数据流?