嘿, 我有一個項目,在序列化一個對象數組後,我必須將文件發送到同一網絡上的另一臺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