Java:如何将文件副本从 vps 机器(可通过远程桌面访问)移动到我的本地电脑

Java: how to move a copy of file from vps machine (accesible with remote desktop) to my local pc

我有一台位于美国的 VPS 机器(我购买了这项服务)。这台机器每天为我做一些工作,一天结束时,它会生成一个对我非常有用的文件。

实际上我必须在一天结束时远程连接机器(使用远程桌面)并在我的本地 PC 中手动获取文件。

我是一名 Java 开发人员,我想开发一个应用程序,将生成的文件自动转发到我的本地 PC(当然只有当我的 PC 打开时,否则它会继续尝试传输但是没有成功)。

您是否知道仅使用免费/开源 Java 库是否可以完成此类任务?

如果 java 可以做到这一点,那应该很棒,但万一 Java 不允许这样做,我也可以使用其他技术。

你问的这个想法在Java中叫做套接字编程。是的,可以按照您的想法去做,但我会做很多工作。我能做的就是,给你一些关于套接字的概念,剩下的你可以自己设计。

我们开始吧 对于客户端机器打开一个这样的套接字,更多信息你可以参考-http://www.javaworld.com/article/2077322/core-java/core-java-sockets-programming-in-java-a-tutorial.html

Socket MyClient;
MyClient = new Socket("Machine name", PortNumber);

包含异常(注意-离线客户端)

Socket MyClient;
try { MyClient = new Socket("Machine name", PortNumber);}
catch (IOException e) {
    System.out.println(e);}

现在服务器

ServerSocket MyService;
try { MyServerice = new ServerSocket(PortNumber);}
    catch (IOException e) {
       System.out.println(e);}

Socket对象会监听来自客户端的请求,

Socket clientSocket = null;
try { serviceSocket = MyService.accept();}
catch (IOException e) {
   System.out.println(e);} 

现在在客户端,创建一个输入流来接收来自服务器的信息

DataInputStream input;
try {
   input = new DataInputStream(MyClient.getInputStream());
}
catch (IOException e) {
   System.out.println(e);
}

在服务器端,使用DataInputStream接收来自客户端的输入

DataInputStream input;
try {
   input = new DataInputStream(serviceSocket.getInputStream());
}
catch (IOException e) {
   System.out.println(e);
}

@Andrea,真的很抱歉,但我还没有达到解决问题的那个水平。这里只是新生。抱歉让您失望了。

解决方案有效。为了帮助其他人,我提到的最后一个问题只是 windows 防火墙打开并阻止了与我的电脑的连接。 通过关闭 windows 防火墙,解决方案有效。