嘿, 我有一个项目,在序列化一个对象数组后,我必须将文件发送到同一网络上的另一台PC。我搜索了“java联网”,但一些例子看起来很复杂。实现这个最简单的方法是什么?除了对IP地址的基本理解之外,我几乎没有网络经验。通过使用java的网络在计算机之间发送文件
回答
如果你有Spring和Maven的一点点经验,我将与Apache Camel,here is a example去如何通过FTP从Java程序发送文件到FTP服务器(从春季帮助不大),但Apache Camel理解LOT协议,例如纯文件复制,通过邮件发送,通过消息队列......我真的认为仅仅通过运营鸽子的传输在Apache Camel中是缺失的。
试试看看Java RMI,特别是关于通过网络发送序列化对象的位。
这取决于你的意思是“发送文件”。如果另一台PC具有可以通过网络看到的共享驱动器(例如在Windows资源管理器中),那么您可以将其复制。 FTP是另一个很常见的选项,非常简单。
您还可以看看使用RMI将序列化数据发送到另一个Java进程。
否则,您可能不得不使用“复杂的方式”。您可能会发现它并不像您认为复制examples那样复杂,而是以字节数组的形式发送文件。
真的吗?,RMI是最简单的吗?我会说这是更困难的方法之一。 – MeBigFatGuy 2011-04-19 12:20:41
@MeBigFatGuy:我没有说这是最简单的!但是RMI是在不同机器上的两个java进程之间进行通信的好方式,我一直都在使用它。对于发送文件的一次性任务来说,这可能是矫枉过正的。 – brain 2011-04-19 12:33:31
该op要求最简单。 – MeBigFatGuy 2011-04-19 13:27:54
您可以简单地为它们创建一个共享文件夹,让它们定期检查新文件。
或者您可以编写自己的客户端服务器程序,以便所有客户端都可以侦听服务器将发送文件的特定端口。
我会尝试通过JMS消息如ActiveMQ发送数据。这样生产者/消费者甚至不需要同时运行。
下面是一个例子http://www.javablogging.com/simple-guide-to-java-message-service-jms-using-activemq/
按照下面的链接,你必须在TCP文件复制一个例子。
使用套接字,看看这个example
简单的Java代码将用于在网络上的移动计算机之间的文件。
公共类FileCopier {
public static void main(String args[]) throws Exception {
//give your files location anywhere in same network
File inboxDirectory = new File("data/inbox");
//give your output location anywhere in same network where you want to save/copy files
File outboxDirectory = new File("data/outbox");
outboxDirectory.mkdir();
File[] files = inboxDirectory.listFiles();
for (File source : files) {
if (source.isFile()) {
File dest = new File(
outboxDirectory.getPath()
+ File.separator
+ source.getName());
copyFile(source, dest);
}
}
}
private static void copyFile(File source, File dest)
throws IOException {
OutputStream out = new FileOutputStream(dest);
byte[] buffer = new byte[(int) source.length()];
FileInputStream in = new FileInputStream(source);
in.read(buffer);
try {
out.write(buffer);
} finally {
out.close();
in.close();
}
}
}
否则你也可以使用Apache的骆驼在计算机之间进行同一网络
public class FileCopierWithCamel {
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
// from("file:data/inbox?noop=true").to("file:data/outbox");
from("file:data/inbox?noop=true").to("file:\\\\OthermachineName\\Output?autoCreate=true");
}
});
context.start();
// Thread.currentThread().join();
Thread.sleep(10000);
context.stop();
}
}
- 1. C#.NET通过网络在计算机之间进行通信
- 2. 开发用于计算机之间通信的网络
- 3. 使用C++在计算机之间发送文件
- 4. 在网络计算机之间传输文件
- 5. 在不同网络上的两台计算机之间发送数据(通过互联网)
- 6. 在计算机之间发送消息
- 7. 通过互联网在两台计算机之间发送命令
- 8. 在java中执行通过网络发送的类文件
- 9. 通过网络发送文件夹
- 10. 在远程计算机之间发送文件
- 11. 网络层(通过计算机网络,的Tanenbaum)
- 12. 通过网络发送的
- 13. 检测通过Android java网络连接的计算机
- 14. 从网络上的计算机发送电子邮件 - NET 4.0
- 15. 通过网络发送数据包到未知数量的计算机
- 16. 通过同一网络上的两台计算机发送信息
- 17. 通过RMI在不同地区的计算机之间发送日期
- 18. 发送包通过网络
- 19. 通过网络发送UITouches
- 20. 如何使用python自动通过网络发送文件?
- 21. 使用NAudio通过网络发送.Wav文件
- 22. 在计算机网络中使用Wireshark
- 23. 通过两个Android手机之间的蓝牙发送文件
- 24. 计算机网络中网桥之间的互连
- 25. Python:通过套接字在两台计算机之间发送数据
- 26. 通过使用Java的网络发送对象
- 27. 用于在计算机之间发送消息的Win32 API
- 28. 从计算机之间发送图像,从Java到MATLAB
- 29. 使用WiFi连接在两台计算机之间发送数据(文本)C#
- 30. TCP/2台的计算机之间IP Matlab的同一网络
访问文件真的?RMI是最简单的吗?我会说这是更困难的方法之一。 – MeBigFatGuy 2011-04-19 12:20:23