`
suhuanxi
  • 浏览: 42414 次
  • 性别: 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

相关推荐

    跨网段获取远程主机MAC地址的方法与java实现

    ### 跨网段获取远程主机MAC地址:方法与Java实现 #### 引言与背景 在计算机网络领域,MAC地址(Media Access Control Address)作为网卡的唯一标识,扮演着关键角色,尤其是在网络通信和安全监控中。然而,传统的...

    Java实现调用远程桌面示例

    `properJavaRDP`是一个用Java编写的远程桌面协议(RDP)客户端,它提供了对Windows远程桌面服务的访问支持。此项目旨在提供一个稳定且可扩展的平台,以便开发者能够在Java应用程序或Web应用中集成远程桌面功能。 ...

    java实现简单远程监控

    下面我们将详细探讨如何使用Java来构建一个简单的远程监控系统。 首先,我们要理解JMX。JMX是一种标准,用于管理和监控Java应用程序。通过创建MBeans(Managed Beans),我们可以封装应用中的特定功能或资源,并...

    Java远程控制简单实现

    1. **定义远程接口**:首先,你需要定义一个Java接口,声明远程方法。这些方法必须抛出java.rmi.Remote和其子类异常。 ```java public interface RemoteControl extends Remote { void executeCommand(String ...

    java应用程序远程登录linux并执行其命令

    Ganymed SSH2 是一个开源的Java库,它支持SSH2协议,可以用于实现安全地远程访问Linux服务器或其他SSH服务器。通过该库,开发者可以方便地在Java应用程序中集成SSH和SCP功能。具体来说,它可以用来: 1. **远程登录...

    Java实现远程桌面(参赛作品)

    7. **用户界面**:使用Java Swing或JavaFX库,开发者构建了用户友好的界面,使用户能够输入远程主机的IP地址和端口号,以及进行连接、断开等操作。 8. **性能优化**:为了提高性能和减少带宽消耗,可能采用了屏幕...

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

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

    java远程调试操作步骤

    - **连接并调试**:点击`Apply and Launch`按钮,IDE会尝试连接到远程主机上的应用程序,并等待断点触发。 参考资料:[https://stackoverflow.com/questions/975271/remote-debugging-a-java-application]...

    java远程采集器

    RMI是Java提供的一种分布式计算能力,它允许程序跨越网络调用另一个JVM上的方法,就像调用本地方法一样。 **Java RMI基本原理:** 1. **定义远程接口**:首先,我们需要定义一个继承自`Remote`接口的自定义接口,...

    使用 Eclipse 远程调试 Java 应用程序

    Eclipse作为一个强大的Java集成开发环境(IDE),提供了丰富的远程调试功能。本篇文章将深入探讨如何使用Eclipse进行远程调试Java应用程序。 首先,确保你已经安装了Eclipse的最新版本,例如Ganymede(V3.4)。...

    Java网络程序

    Java网络编程是Java开发中的一个重要组成部分,它提供了丰富的API支持,使得开发者能够轻松地实现各种网络应用的需求。无论是简单的URL数据读取还是复杂的Socket通信,Java都提供了相应的工具和技术来满足这些需求。...

    java 局域网监控程序

    在这个场景中,我们讨论的是一个使用Java编程语言开发的局域网监控程序。 Java是一种广泛使用的、跨平台的编程语言,它以其“一次编写,到处运行”的特性闻名。Java的可移植性使得开发者能够编写在各种操作系统上...

    Java语言实现Telnet客户端程序(有界面)

    Telnet 是一种协议,允许用户通过 Internet 或其他网络与远程主机建立连接,就像是坐在远程主机前直接操作一样。在 Java 中实现 Telnet 客户端,主要涉及到 Java 的 Socket 编程和多线程技术。 1. **Socket 编程**...

    两个QM之间消息传递JAVA程序

    2. **远程队列(Remote Queue)**:远程队列是在一个队列管理器上定义的,它代表了另一个队列管理器上的物理队列。这样,消息可以在本地队列上操作,但实际上被发送到远程队列管理器的相应队列。 3. **Java API for...

    java login 用户登陆程序404错误解决办法

    - **检查目录结构是否完整**:一个典型的Web应用程序应该包含以下主要目录: - `WEB-INF`:存放`web.xml`以及其他配置文件、类文件等。 - `WEB-INF/lib`:放置第三方库的jar文件。 - `WEB-INF/classes`:存放编译...

    用Java实现的网络唤醒工具

    6. **实现原理**:Java程序首先会创建一个包含魔术包的数据流,然后使用Socket编程来建立与目标网络的连接。一旦连接建立,魔术包将被发送到广播地址,唤醒目标主机。 7. **安全性考虑**:虽然WOL提供了便利,但也...

    LogFilter (2)_javaweb_

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如日志记录、权限控制等。在本案例中,我们关注的是`LogFilter`,一个用于记录HTTP请求信息的过滤器。...

    java远程控制软件JPCanyWhere

    作为一个远程控制软件,JPCanyWhere应具有直观易用的用户界面,包括连接设置、会话管理、键盘映射、屏幕分辨率调整等功能。用户应能轻松配置远程主机信息,启动或断开会话。 5. **文件传输**: 支持文件传输是...

    java源码包2

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

Global site tag (gtag.js) - Google Analytics