免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1533 | 回复: 3
打印 上一主题 下一主题

请进来看一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-03 11:13 |只看该作者 |倒序浏览
public class Server{
                             
                             public static void main(String args[]) {
                               try{
                              
                                   ServerSocket server=null;
                                   
                                   try{
                                     server=new ServerSocket(4700);
                                     }catch(Exception e) {
                                     System.out.println("can not listen to:"+e);
                                     }
                                    
                                     Socket ssocket=null;
                                     try{
                                       ssocket=server.accept();
                                       
                                       }catch(Exception e) {
                                       System.out.println("Error."+e);
                                       
                                     }
                                    
                                    
                           
                           
                            BufferedReader fromC=new BufferedReader(new InputStreamReader(ssocket.getInputStream()));
                            String cmd = fromC.readLine();
                            System.out.println("Client's command:"+cmd);

                            Runtime runtime = Runtime.getRuntime();
                            Process pro = runtime.exec(cmd);
                            InputStream its = pro.getInputStream();
                           
                            BufferedReader sin=new BufferedReader(new InputStreamReader(its));
                            PrintWriter os=new PrintWriter(ssocket.getOutputStream());
                           
                            String line;
                           
                            while(true){
                             
                              while( (line = sin.readLine()) != null ){
                                        
                                  os.println(line);
                                  os.flush();
                                  //System.out.println("Server:"+line);
                                 
                                  line=sin.readLine();
                                  }
                                   break;
                                }
                                 
                                  os.close();
                                  fromC.close();
                                  ssocket.close();
                                  server.close();
                                  }
                                 
                                  catch(Exception e){System.out.println("Error:"+e);}
                                
                              }
                              
                            }
-------------------------------------------------------------------
import java.net.*;
import java.io.*;

                        public class Client{
                        
                        public static void main(String args[]) {
                               try{
                                       Socket csocket=new Socket("193.9.200.2",4700);
                                       OutputStream os = csocket.getOutputStream();
                                       os.write("ping 193.9.200.10 \n".getBytes());
                                     
                                   BufferedReader br=new BufferedReader(new InputStreamReader(csocket.getInputStream()));
                                   String line;
                                       while( (line = br.readLine()) != null ){
                                                      System.out.println("Clinet::"+line);
                                               }
                                       os.flush();
                                       os.close();       
                                       csocket.close();
                                   }
                               catch(Exception e){e.printStackTrace();}
                              
                         }
                       }                     
----------------------------------------------------------
可以收到这样的效果:
客户端发出一条指令如PIGN 命令,由os.write("ping 193.9.200.2 \n".getBytes())
交给SERVER执行,执行的结果实时的发回给CLINET(命令产生的结果集)。
CLINET打印该结果。问题是,命令执行完成后,两端的通信就中断了
如何能保持SERVER端的监听,以便接收CLINET的下一条命令?

论坛徽章:
0
2 [报告]
发表于 2006-08-03 14:44 |只看该作者
貌似看见过!

不知道LZ想问什么??

论坛徽章:
0
3 [报告]
发表于 2006-08-04 02:23 |只看该作者
while(true)
{
ssocket=server.accept();
process(ssocket);
}

private void process(Socket ssocket)
{
    BufferedReader fromC=...
    ...
}

看明白了吗?你只server.accept();一次,当然就只能处理一次,要一直处理下去,就要在accept()这里循环,不过你的程序真的要能连续运行下去还有得改了。

论坛徽章:
0
4 [报告]
发表于 2006-08-04 11:03 |只看该作者

回复 3楼 perryhg 的帖子

我按你的方法改了,现在基本满足要求了。THANKS!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP