用Java开发点对点应用程序

24

我有一个大学项目,需要使用Java开发一个点对点文件共享系统。

基本上,几个用户应该能够使用这个点对点系统共享文件。

有没有人能给我一些关于如何构建这个系统的指南呢?


3
我建议您查看众多开源的点对点文件共享实现,并将它们用作模板(或直接使用它们)。 - Peter Lawrey
2个回答

21

为大学项目阅读一些关于套接字的教程。我相信这是您的教授对您的期望。例如,请看以下内容: http://www.oracle.com/technetwork/java/socket-140484.html

有两种一般解决方案:基于服务器和无服务器。对于基于服务器的解决方案,所有客户端都应预先配置有服务器的IP地址。服务器打开服务器套接字并开始侦听。因此,每个客户端都连接到服务器并注册。注册非常简单:服务器只需要客户端的IP地址。现在服务器拥有已连接客户端的列表,并将列表发送给每个客户端。为了创建点对点应用程序,每个客户端也会打开服务器套接字。当客户端A希望连接到客户端B时,它只需连接到其套接字。

您可以实现无服务器解决方案。在这种情况下,您需要一些基于广播的发现机制。

我希望这能帮助您。祝你好运。


客户端不知道服务器IP地址怎么办?因为(所有设备)它们还没有连接到任何网络?我建议为它们提供WiFi通信。但这是否可能? - gumuruh
Wifi只是连接到TCP/IP世界的一种方式。如果客户端不知道服务器的IP,您需要某种发现机制。例如广播。但这仅适用于封闭网络。 - AlexR
这是否意味着两个已经打开WIFI(但未连接任何网络)-没有互联网,没有蓝牙,没有手机数据的Android设备之间无法通信?我认为Java / Android可以通过WiFi广播其简单字符串?@AlexR - gumuruh
我猜他们可以,但我不熟悉Android API。我也不太明白你是如何从我的评论中得出这个结论的。 - AlexR
因为你刚才说我们需要实现服务器客户端概念来实现设备之间的通信。这是正确的。我只是想知道如何通过发送无线信号的数据使一个设备对另一个设备大喊而没有任何网络连接。 - gumuruh
是的………这是可能的,但不知道如何实现……ShareIt和类似的应用程序在桌面和Android上都可以实现。 - Ravinder Payal

6

您想了解JXTA。该网站已迁移到jxse.kenai.com。实用的JXTA II书籍已经在Scribd上发布,供阅读。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接