当前位置:  技术问答>java相关

高手看看我的socket用法有何错误???

    来源: 互联网  发布时间:2015-08-15

    本文导语:  我想编写一个程序,通过socket发命令到邮件管理服务器程序,做诸如添加用户等操作。现在可以成功登录,并且可以发命令,能成功执行。 只是有一点不明白:在用telnet直接操作时,每输入一条命令运行结束后,会...

我想编写一个程序,通过socket发命令到邮件管理服务器程序,做诸如添加用户等操作。现在可以成功登录,并且可以发命令,能成功执行。
只是有一点不明白:在用telnet直接操作时,每输入一条命令运行结束后,会有结果返回,而我用程序执行时,却取不到这个结果。程序会一直不动,直到超时,为何??????

public class MailServerManage{
    Socket mailSocket;
    PrintWriter outToServer;
    BufferedReader is;
    public void MailServerManage()
    {}

    public boolean connect(String host,int port,String user,String psw)
    {
       byte[] bt = new byte[255];
       int bytesRead = 0;

       try{

           mailSocket = new Socket(host,port);
           mailSocket.setTcpNoDelay(true);
           is=new BufferedReader(new InputStreamReader(mailSocket.getInputStream()));
           outToServer= new PrintWriter (mailSocket.getOutputStream());
           System.out.println("connected...");

           outToServer.println("root");
           outToServer.println("root"); 

       }
       catch(UnknownHostException ex){
           System.out.println("Could not resolve host name: "+ex.getMessage());
           return false;
       }
       catch(IOException ex){

           System.out.print("A communication error occured:"
                   +ex.getClass().getName()+": "+ex.getMessage());
           return false;
       }
       return true;
    }

    public String command(String cmd)
    {
       String retStr="";
       try{
        outToServer.println(cmd);
        
        String line=null;
        String getS="";
        while((line=is.readLine())!=null){//如果注释掉这段读的代码,则可正常运行
                 line=is.readLine();

                 getS=getS+line+"n";
           }
           System.out.println(getS);
        }catch(IOException ex){
         return "";
       }

       return retStr;
    }
    
    public void disconnect()
    {
       try{
         outToServer.flush();
   mailSocket.close();
       }catch(Exception ex){
       }
    }
    public static void main(String args[])
    {
         MailServerManage msm=new MailServerManage();
         String st="";
         if(msm.connect("192.168.1.8",4555,"root","root"))
           st=msm.command("deluser abcn");
         System.out.println(st+"abcde");
         msm.disconnect();

    }
}

|
while((line=is.readLine())!=null){
                   //如果注释掉这段读的代码,则可正常运行
      line=is.readLine();
      getS=getS+line+"n";
  }

这样做肯定不对。再读到最后一行的时候就回把NULL也添加。
同时,这样读入数据也会少读一行数据。
改成:
while((line=is.readLine())!=null){      
      getS=getS+line+"n";
  }


|
是不是有什么confirm语句让你确认的?如果你不用yes/no确认它会一直等下去。

|
while((line=is.readLine())!=null){//如果注释掉这段读的代码,则可正常运行
                 line=is.readLine();

                 getS=getS+line+"n";
           }
这段代码有点问题,如果对方输入一个命令的话,必须输入第二个命令才行,可以把
这样试试
while((line=is.readLine())!=null){//如果注释掉这段读的代码,则可正常运行
                 //line=is.readLine();

                 getS=getS+line+"n";
           }

    
 
 

您可能感兴趣的文章:

  • 哪位高手能指导一下cvs命令的用法?
  • 关于C语言中的一些用法,高手进
  • 有没有真正的高手知道jTable的用法请给个例子好吗?(极高分)
  • 请那位高手详细解释一下wait函数的用法和意义?
  • Linux下C编程数学函数的用法,请教高手
  • 对epoll+多线程的用法和效率的疑问,麻烦高手指点!
  • 请各位java高手谈谈java结合xml的用法,谢谢,来者有分!!
  • 关于gettext包的用法, 高手help me !!! (大家看我写这贴子如此辛苦, 求解如此急切, 都来看看, 来着有分)
  • 向高手请教import语句用法!!!
  • 请高手指导一下vi的用法?
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?
  • 高手帮我看看这个错误怎么解决?
  • JAVA高手救命,如何对JSP程序进行错误控制!
  • ftp错误,请高手帮分析一下
  • 内核启动错误,高分请高手指点。。。
  • linux高手请帮忙,系统崩溃,段错误!!!
  • !!!!!警告:Mandrake Linux 9.0 安装错误,各位小心刻盘,还请高手相助!!!!!
  • 问题太难,请教高手,关于raid1功能的错误检测的实现
  • 一个奇怪的错误,请高手解答
  • 请教高手,如下编译错误是什么原因
  • 用rose试图生成java代码,提示如下错误,求教高手!
  • 高手帮帮忙,编译错误,在线等
  • linux 启动错误,高手看看怎么回事~~谢
  • Linux 多线程出现段错误 高手请进啊!
  • linux环境下发邮件报错误,往高手指教
  • jsp中找不到表的错误,急!!!请高手指教。
  • 不知道为什么一直报这个错误请那个高手指点一下
  • 安装linux出现“Install bootloader"错误怎么办?请高手指点!
  • 急!!!请问各位高手 java.lang.NullPointerException 这是什么错误,怎么排除? 在下多谢了!
  • 有熟悉EXIM的高手高手么?? iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各个高手看看这个问题!本人第一次学习java所以要各位高手的帮助。。
  • linux高手看看
  • 请问哪位高手可以帮我远程看看Fedora的安装
  • 高手帮忙看看cr3的值
  • shell 编程 从0到10求和 ,代码有错,请高手看看
  • 郁闷?高手帮看看
  • samba啟動出錯,高手請幫忙看看,謝謝!
  • 关于线程的问题,还请各位高手们能帮着看看
  • 高手请进来看看!
  • 高手看看这段代码错在哪里
  • 有高手看看我提的问题么?
  • 我的resin启动不了,请各位高手帮我看看!
  • 高手们请帮我看看为什么会这样?//在线等候
  • 高薪求Linux开发高手,可兼职,有开发经验的进来看看
  • ubuntu8.04 不能上网和关于update的问题(麻烦高手帮忙看看)
  • 菜鸟,高手都看看,帮帮忙啊,关于密码验证的问题
  • 各位高手,请教一个gcc编译的问题。大家都进来看看!
  • javamail高手看看这个。http://www.csdn.net/expert/topic/586/586408.xml?temp=.2403833。我把帖子结了。。。
  • 高手们帮我看看这段程序??
  • 编译错误,请高手过来看看!!
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3