`
suhuanxi
  • 浏览: 40899 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

一个java访问远程主机的程序

阅读更多

本文出自:http://blog.csdn.net/wopopo/archive/2008/03/11/2169991.aspx

Server端/主机:

package p11;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerMain {
    
public static int TCP_PORT = 8888;
    ServerSocket ss 
= null;
    String cmd 
= null;


    
public void startServer() {
        
try {
            ss 
= new ServerSocket(TCP_PORT);
        } 
catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        
while (true) {
            
try {
                Socket sct 
= ss.accept();
                Thread td 
= new Thread(new ServerListenerThread(sct));
                td.start() ;
            } 
catch (IOException e) {
                
// TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }



    
public static void main(String[] args) {
        
if (args.length > 0){
            
try{
                
int xx = Integer.parseInt(args[0]) ;
                ServerMain.TCP_PORT 
= xx ;
            }
catch(Exception e){
                
            }
        }
        
try {
            
//在主机上创建一个bat文件可以执行你得一切命令
            
//因为dos的一些命令例如dir  tree 等命令为内部命令 ,java远程不能直接执行
            
//运行方式举例:
            
//c:\\11.bat dir c:
            
//c:\\11.bat del d:\\11.data
            
            
            
            
//普通的ping  netstat  ipconfig等命令是可以直接运行的
            FileOutputStream fs = new FileOutputStream("c:/11.bat") ;
            PrintWriter fw 
= new PrintWriter(new OutputStreamWriter(fs)) ;
            fw.println(
"%1  %2 %3 %4 %5 %6 %7 %8 %9") ;
            fw.close() ;
            fs.close() ;
        } 
catch (FileNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
catch(IOException e){
            e.printStackTrace() ;
        }
        
        
        
        
new ServerMain().startServer();
    }

}

 

package p11;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class ServerListenerThread implements Runnable ...{
    
private Socket sct = null;

    
public ServerListenerThread(Socket s) ...{
        
this.sct = s;
    }


    
public void run() ...{

        
try ...{
            DataInputStream ir 
= new DataInputStream(sct.getInputStream());
            String cmd 
= ir.readUTF();
            
while (true...{

                
try ...{
                    OutputStream os 
= sct.getOutputStream();
                    System.out.println(cmd);
                    
if (cmd.trim().equalsIgnoreCase("over")) ...{
                        
break;
                    }

                    Process pc 
= null ;
                    
try ...{
                            
                    pc 
= Runtime.getRuntime().exec(cmd);
                    }
 catch (IOException e1) ...{
                        
// TODO Auto-generated catch block
                        System.err.println("错误的命令 :" + cmd);
                        DataOutputStream ds 
= new DataOutputStream(os);
                        ds.writeUTF(
"错误的命令 :" + cmd) ;
                        cmd 
= ir.readUTF();
                        
                        
continue;
                    }

                    
                        InputStream sin 
= pc.getInputStream();
                        InputStream sin2 
= pc.getErrorStream();
                        Thread tIn 
= new Thread(new DoProccess(sin, os));
                        Thread tErr 
= new Thread(new DoProccess(sin2, os));
                        tIn.start();
                        tErr.start();
                        
int result = 0;
                        
try ...{
                            result 
= pc.waitFor();
                            tIn.join();
                            tErr.join();
                        }
 catch (InterruptedException e) ...{
                            
// TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        
/**//*
                        sin.close();
                        sin2.close();
                        os.close();
                        
*/

                        
if (result == 0...{
                            System.out.println(
"  *SUCCESS*  ");
                        }
 else ...{
                            System.out.println(
"  *FAILED*  ");
                        }

                        cmd 
= ir.readUTF();


                }
 catch (IOException e1) ...{
                    
// TODO Auto-generated catch block
                    e1.printStackTrace();
                }
 
            }


        }
 catch (IOException e2) ...{
            
// TODO Auto-generated catch block
            e2.printStackTrace();
        }
 finally ...{
            System.out.println(
"-- will ---End . ---------");
            System.out.println(
"-- is ---End . ---------");
            
            
try ...{
                sct.close();
            }
 catch (IOException e) ...{
                
// TODO Auto-generated catch block
                e.printStackTrace();
            }

        }


    }

}

 

 

package p11;

import java.io.*;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class DoProccess implements Runnable ...{
    
private InputStream in;
    
private OutputStream ot;
    
public DoProccess(InputStream pc,OutputStream ot) ...{

        
this.in = pc;
        
this.ot = ot ;
    }


    
public void run() ...{
        
// TODO Auto-generated method stub

        BufferedReader inputBufferedReader 
= new BufferedReader(
                
new InputStreamReader(in));
        DataOutputStream ds 
= new DataOutputStream(ot);

        String line 
= null;
        
try ...{
            
while ((line = inputBufferedReader.readLine()) != null...{
                System.out.println(
"--:    "+line);
                ds.writeUTF(line) ;
                
            }

        }
 catch (IOException e1) ...{
            
// TODO Auto-generated catch block
            e1.printStackTrace();
        }


    }


}

客户端/控制端

 

package p12;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JOptionPane;

import p11.ServerMain;

public class ClientMain {
    
public static int TCP_PORT = 8888;
    
public static String ip = "127.0.0.1";

    
public static void main(String[] args) {
        
if (args.length > 1 ){
            ip 
= args[0] ;
            
try{
                
int xx = Integer.parseInt(args[1]) ;
                ClientMain.TCP_PORT 
= xx ;
            }
catch(Exception e){
                
            }
        }
        
new ClientMain().connect();
    }

    
public void connect() {
        
try {
            Socket sct 
= new Socket(ip, TCP_PORT);
            System.out.println(
"连接成功");
            InputStream is 
= sct.getInputStream() ;
            
new&nbs
2
3
分享到:
评论
1 楼 mht19840918 2008-03-12  
java socket

相关推荐

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包4

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包3

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包2

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

    jsr80 java 访问 usb

    它包括一个 RMI proxy 和一个 daemon 应用程序,它让 Java 应用程序可以访问远程计算机上的 USB 设备。 usb.util : 这个包提供了一些有用的实用程序,可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 ...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI...

    remote-card:远程JavaCard访问

    允许在一个主机上连接多个JavaCard,并在另一个主机上远程访问它们。 该项目包含3个主要部分: 服务器部分连接到卡,并通过REST和WebSocket接口提供API。 客户端部分是一个用于连接各种卡源(例如,物理,...

    基于JAVA本地监听与远程端口扫描的毕业设计,通过JAVA的ServerSocket类,创建ServerSocket对象并绑定

    本地端口监听用于监控本机某一端口是否有连接请求,远程端口扫描用于检测远程主机开放的端口情况。 本地端口监听实现通过JAVA的ServerSocket类,创建ServerSocket对象并绑定要监听的本地端口,然后通过accept()方法...

    RemoteProcessExplorer:管理远程主机进程-开源

    Remote Process Explorer(简称RPE)是面向外部所有管理员的小型工具,需要立即在一个或多个域中管理客户端。 使用RPE,管理员可以查看客户端上所有正在运行的进程,当然也可以将其杀死。 RPE还显示了服务及其状态和...

    java-servlet-api.doc

    Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。 Servlet的初始化 Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化...

    java 面试题 总结

    Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

    java远程控制系统.zip

    URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的...

    java图像压缩源码-scala-ssh:通过SSH为Scala应用程序进行远程shell访问

    java图像压缩源码scala-ssh是一个通过 SSH 提供远程 shell 访问的库。 它以提供以下功能为基础: 远程执行一个或多个 shell 命令 访问远程 shell 命令的stdin 、 stdout 、 stderr和 exitcode 通过密码、公钥或代理...

    超级有影响力霸气的Java面试题大全文档

     Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,...

Global site tag (gtag.js) - Google Analytics