- 论坛徽章:
- 0
|
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的下一条命令? |
|