嘿, 我有一個項目,在序列化一個對象數組後,我必須將文件發送到同一網絡上的另一臺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. 通過互聯網在兩臺計算機之間發送命令
- 4. 在java中執行通過網絡發送的類文件
- 5. 在遠程計算機之間發送文件
- 6. 通過網絡發送文件夾
- 7. 網絡層(通過計算機網絡,的Tanenbaum)
- 8. 通過RMI在不同地區的計算機之間發送日期
- 9. 通過網絡發送UITouches
- 10. 從計算機之間發送圖像,從Java到MATLAB
- 11. 通過使用Java的網絡發送對象
- 12. 使用WiFi連接在兩臺計算機之間發送數據(文本)C#
- 13. TCP/2臺的計算機之間IP Matlab的同一網絡
- 14. Java如何通過網絡通過UI按鈕發送數據
- 15. 在通過網絡發送之前捕獲我的數據包
- 16. 局域網喚醒(WoL) - 通過網絡啓動計算機
- 17. 通過網絡在單臺計算機上運行調酒師
- 18. Java,通過Nmap寫入文件在大型網絡上死機
- 19. Visual basic.net在局域網上的計算機之間發送字符串
- 20. 使用winsock通過網絡發送Unicode(win32)文本數據包?
- 21. 使用Java中的ipp將PDF文件發送到網絡打印機
- 22. 通過網絡代理使用C#發送電子郵件
- 23. 通過網絡服務發送通知到Android手機
- 24. 使用NSMutableURLRequest通過http post發送文件時發生網絡錯誤
- 25. 兩臺機器之間的Java網絡通信
- 26. 使用Adhoc或推送通知在Ipad/Ipod /計算機之間傳輸數據
- 27. 通過網絡在客戶端和服務器之間發送數據
- 28. Iphone通過本地網絡在兩個iphones之間發送數據
- 29. 使用C#通過網絡發送文件的最佳方式是什麼?
- 30. 如何使用FMOD通過網絡從磁盤發送文件的聲音流?
訪問文件真的?RMI是最簡單的嗎?我會說這是更困難的方法之一。 – MeBigFatGuy 2011-04-19 12:20:23