CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

使用socket进行通断的测试,速度慢,求解!

楼主numbwood(木头)2006-03-03 12:59:01 在 Java / J2SE / 基础类 提问

各位,小弟在尝试使用socket与网络内其他计算机通断测试时,速度奇慢,不知何故,望各位帮助.  
  代码如下:  
  import   java.io.BufferedReader;  
  import   java.io.IOException;  
  import   java.io.PrintWriter;  
  import   java.net.Socket;  
  import   java.text.SimpleDateFormat;  
  import   java.util.ArrayList;  
  import   java.util.Date;  
   
  import   QzjxxDao;  
  import   Qzjxx;  
   
  public   class   MonitorClient   {  
   
  Socket   socket;  
  BufferedReader   in;  
  PrintWriter   out;  
  long   connTime;  
  Date   currTime   =   new   Date();  
   
  private   ArrayList   aList   =   new   ArrayList();    
  public   ArrayList   aListOut   =   new   ArrayList();    
  private   Qzjxx   qzjxx   =   new   Qzjxx();  
  private   QzjxxDao   qzjxxDao   =   new   QzjxxDao();  
  public   MonitorClient()   {  
      try{  
          aList   =   qzjxxDao.getQzjxxAll();  
          for(int   i   =   0;   i   <   aList.size();   i++){  
              qzjxx   =   (Qzjxx)aList.get(i);                 //获取服务器信息(IP,端口等)  
                                try{  
                                    connTime   =   System.currentTimeMillis();  
                  socket   =   new   Socket(qzjxx.getIp(),   Integer.parseInt(qzjxx.getPort().trim()));  
                  connTime   =   System.currentTimeMillis()   -   connTime;  
                  socket.close();  
                  qzjxx.setZtbz("正常");                                                         //连接状态  
                  qzjxx.setConnTime(String.valueOf(connTime));             //连接时长  
                  qzjxx.setConnImg("connOk.gif'>");                                 //连接状态图片          
                                  }catch(IOException   e){  
                                  if   (e.getCause()   ==   null){  
                                      qzjxx.setZtbz("失败");  
                                      qzjxx.setConnTime("Time   Out");  
              qzjxx.setConnImg("connClose.gif'>");  
                  }  
                                  }  
                                   
                                  qzjxx.setCurrTime(DoFormatDate(currTime,true));         //当前连接时间  
                aListOut.add(qzjxx);  
            }  
      }catch   (Exception   e){  
      e.getStackTrace();  
      }  
  }  
   
  /**  
    *   Description   :   格式化显示日期型数据  
    *   @param   Date   dt_in   :日期型数据  
    *   boolean   bShowTimePart_in   :   是否显示时间部分  
    *   @return   String   格式化后的日期格式  
    */  
   
  public   String   DoFormatDate(java.util.Date   dt_in,   boolean   bShowTimePart_in)   {  
          if   (bShowTimePart_in)  
                  return   (new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss")).format(dt_in);  
          else  
                  return   (new   SimpleDateFormat("yyyy-MM-dd")).format(dt_in);  
  }  
   
  /**  
    *   @return   返回   aListOut。  
    */  
  public   ArrayList   getAListOut()   {  
  return   aListOut;  
  }  
   
  /**  
    *   @param   listOut   要设置的   aListOut。  
    */  
  public   void   setAListOut(ArrayList   listOut)   {  
  aListOut   =   listOut;  
  }  
  } 问题点数:20、回复次数:7Top

1 楼numbwood(木头)回复于 2006-03-03 13:35:16 得分 0

求解啊,朋友们Top

2 楼numbwood(木头)回复于 2006-03-03 16:23:06 得分 0

只有自己顶一下了,不然沉到底了.Top

3 楼yanhan0615(炮炮)回复于 2006-03-03 18:14:28 得分 0

太长了Top

4 楼numbwood(木头)回复于 2006-03-06 10:04:15 得分 0

晕,这么点代码也算长啊?Top

5 楼sandyen(杉叶)回复于 2006-03-06 10:18:32 得分 20

Socket在建立的时候是非常浪费资源的,连接时间也比较长,根本就不适合用来判断远程机器是否能连接。  
  建议你使用ping命令,通过ping可以知道远程机器是否可以ping通。Top

6 楼numbwood(木头)回复于 2006-03-06 11:12:01 得分 0

sandyen(杉叶)   朋友,您好。因为我们客户需要通过WEB来监控对各个服务器的状态,所以我们只有通过程序来模拟PING命令,由于没有找到合适的监控办法,所以只有想到通过socket的连接失败与否来判断是否通与不通,如果您有更好的解决办法,不防告诉,在下感激不尽。Top

7 楼numbwood(木头)回复于 2006-03-06 11:16:18 得分 0

还有个问题是,我们的各个服务器端口就只开启了我们需要的端口,其他端口都是屏蔽的。如果使用ping命令,也无法获知服务器的状态。Top

相关问题

  • 高分寻求解决打开首页速度慢的方法
  • like語句奇怪的速度慢問題求解。
  • 求解,Socket的!
  • 求解 Socket API 编程
  • 查询速度慢!!!!!!
  • 开机速度慢
  • 机器速度慢
  • DELPHI+ACCESS启动速度慢
  • 计算机速度慢
  • 高分求解,SOCKET中GETPEERNAME的问题

关键词

  • socket
  • date
  • qzjxxdao
  • qzjxx
  • 通断
  • monitorclient
  • arraylist
  • alist
  • 使用
  • printwriter

得分解答快速导航

  • 帖主:numbwood
  • sandyen

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo