我用ServerSocket做了一个服务程序
发送信息的代码是这么做的:
byte[] buf = new byte[bufSize];
OutputStream out = sck.getOutputStream();
         ......
out.write(buf);
out.flush();客户端用HttpURLConnection接受信息,可是发现一些信息却接受不完(偶尔出现的情况)。
但是如果我在out.flush()后面使用for(int j=0;j<bufSize*2000;j++);这样的语句强行延时一些,这种情况就少了很多,请问谁碰到过这样的问题啊?怎么解决啊,而且延时也不知道言延多少才合适啊分不够我再给!

解决方案 »

  1.   

    呵呵,我也在做类似的东西,但是我测试都是用telnet,不知道楼主具体是怎么样的……
      

  2.   

    客户端用HttpURLConnection接受信息,可是发现一些信息却接受不完(偶尔出现的情况)。
    但是如果加上一些延时好像就没有问题了
      

  3.   

    socket不是每一次都能读取你想要的长度。你需要根据当前包的长度,循环在流中读取,一直读到你的长度够为准。如果当前你发送的一个包长度为200. byteArr = new byte[200]你用in.read(byteArr)大部分的情况下都能读到200,但是也有少数的情况下你的byteArr并没有读到200个字节,需要你收到的去判断是否读满数据了。
      

  4.   

    我读取的时候用的是方法
     br = new BufferedReader(new InputStreamReader(hc.getInputStream()));        
                while((temp = br.readLine()) != null) {
    ....
    这样做的