Java Socket的一个困惑,求大牛解释?!谢谢

白哥哥2018 2011-11-24 12:17:28
代码及问题见注释描述:

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();
}
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
w21fanfan 2011-11-24
  • 打赏
  • 举报
回复
如果你发送的信息过快服务器处理不过来会有异常的,同步的请求是你给了一个服务器那边就要处理这个请求,如果在处理请求还没处理完的时候你突然又给一个请求,服务器要怎么还能顾的上这个请求,不过这是我个人的理解不知道是否正确!!参考而已
yktd26 2011-11-24
  • 打赏
  • 举报
回复
这是不是和服务器端的处理能力也有关系??
ALAN-YOUNG 2011-11-24
  • 打赏
  • 举报
回复
应该是服务器处理不过来,服务端应该需要使用缓冲流的话,应该不会。
suxiaolei198955 2011-11-24
  • 打赏
  • 举报
回复
和TCP/IP协议有关的把,好像有什么接收窗口Size发送窗口Size的什么 有点记不清了 也和服务器接受数据能力有关 睡眠是保证数据正确接收的一种保障方法
qw6889037 2011-11-24
  • 打赏
  • 举报
回复
有睡眠时间是为了保证你的接收数据时间足够长,可以将数据完全接收,如果不加这个时间,并且对方发送数据较大时,可能会导致这笔请求没有接收完成,下一笔请求就来了,会造成数据接收不完整,个人理解,请指教
小赖赖 2011-11-24
  • 打赏
  • 举报
回复
服务器如果处理的够快,或者实现了缓冲机制的话,不加sleep也是可以的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧