socket 传输 大数据包
请大家帮忙分析一下Socket 传输 大数据包的 问题….  
Socket Client 发送方法byte[] b ;DataOutputStream.write(b)
Socket server 接收方法:DataInputStream. read(buf[], socketBufferSize*iLoop, readSize)  
Socket 接收,先读取包头,包头里填有数据包长度,bodylength  
如果bodylength > socketBufferSize 则分多次读取。
我现在接收端的代码为
          public void run(){
	    	try{
	    	 while(s.isConnected()){
			    	is = s.getInputStream();
				    while(is.available()!=0){
				          System.out.println("InputStream流中的数据个数"+is.available());
				          b = new byte[is.available()];
				          is.read(b);//写入b时已经是十进制数据了		  
			 }}}catch (Exception e){
		                 try {
				    is.close();
			    	    s.close();
		                 } catch (Exception e1) {
			}}
	    }
请问我该如何修改
------解决方案--------------------System.out.println("InputStream流中的数据个数"+is.available());
b = new byte[is.available()];
is.read(b);//写入b时已经是十进制数据了  
这个地方不能这么搞,is.available()返回的数是不准确的;开辟固定空间,不停的读就行了。
------解决方案--------------------用字节来传输:
包头+包体长度+包体内容
------解决方案--------------------做个缓冲区,缓冲够一个包后直接读取