读书人

Java Socket的一个困惑求大牛解释?多

发布时间: 2012-02-25 10:01:48 作者: rapoo

Java Socket的一个困惑,求大牛解释?!谢谢
代码及问题见注释描述:

Java code
public static void main(String[] args) throws Exception{        Socket s=new Socket(IP,PORT);        //这个循环次数很大时会发生。循环次数小时,不会,如1W次。        for(int i=0;i<1000000;i++){            String str = "字符串"+i+"\n";            is=s.getOutputStream();              is.write(str.getBytes("UTF-8"));              is.flush();              //为什么一定要有个睡眠时间??              //如果没有睡眠时间,当循环次数(发送请求信息)比较大时,              //服务端不能收到一样多的请求,求解释???!。              Thread.sleep(50);        }          s.close();      }


[解决办法]
这是不是和服务器端的处理能力也有关系??
[解决办法]
如果你发送的信息过快服务器处理不过来会有异常的,同步的请求是你给了一个服务器那边就要处理这个请求,如果在处理请求还没处理完的时候你突然又给一个请求,服务器要怎么还能顾的上这个请求,不过这是我个人的理解不知道是否正确!!参考而已
[解决办法]
服务器如果处理的够快,或者实现了缓冲机制的话,不加sleep也是可以的
[解决办法]
有睡眠时间是为了保证你的接收数据时间足够长,可以将数据完全接收,如果不加这个时间,并且对方发送数据较大时,可能会导致这笔请求没有接收完成,下一笔请求就来了,会造成数据接收不完整,个人理解,请指教
[解决办法]
和TCP/IP协议有关的把,好像有什么接收窗口Size发送窗口Size的什么 有点记不清了 也和服务器接受数据能力有关 睡眠是保证数据正确接收的一种保障方法
[解决办法]
应该是服务器处理不过来,服务端应该需要使用缓冲流的话,应该不会。

读书人网 >J2SE开发

热点推荐