没有任何框架的java p2p

Posted

技术标签:

【中文标题】没有任何框架的java p2p【英文标题】:java p2p without any framework 【发布时间】:2012-09-18 07:01:56 【问题描述】:

我需要开发一个不使用 JXTA 等任何框架的 p2p 应用程序。我在 *** 中搜索了各种主题,但没有得到我想要的。我有一个维护客户端列表及其资源的服务器。客户端将联系服务器以找出哪个客户端拥有什么。客户端从服务器获取此信息后,将与其他客户端建立 p2p 连接 - 服务器不参与此操作。

我需要知道如何在同一个程序中创建客户端套接字和服务器套接字,即程序应该像服务器和客户端一样。请帮帮我。

for ex:
 client code 
 Socket clientSocket = new Socket("localhost", 10000);

 server code
 ServerSocket welcomeSocket = new ServerSocket(10000);

     while(true)
     
        //client socket
        Socket connectionSocket = welcomeSocket.accept();
        .......
        .......
     

如何将 serversocket 添加到我的客户端并使其像服务器一样工作?我知道我必须使用线程,但是谁能详细解释一下?或者请发布一个相关的帖子..我厌倦了浏览各种论坛和网站..

【问题讨论】:

*** 是针对更具体的问题。这就是为什么人们总是问“你试过什么?” “你遇到了什么问题?”。在您的情况下,您需要关于几个主题的指导:如何构建聊天/p2p 应用程序,如何在 Java 中使用普通套接字,等等。也许您可以将您的问题重新表述为“关于...的教程的建议”,列出您不知道该怎么做的具体事情。 旁注:如何添加“serversocket”并使其作为服务器工作。唯一的区别是服务器 = 被动(侦听),客户端 = 主动(连接)。一个是在某个端口监听等待其他人(客户端)连接。您的应用必须能够在做自己的事情时监听连接(作为客户端连接到其他人)。 您将需要两个线程,一个用于客户端,一个用于服务器...(除非您选择基于 NIO 的非阻塞 IO。在这种情况下,您最好使用作为 NIO 的框架很难做对)。你的代码看起来不错,试试吧! @helios: Homework 标签现在正在被淘汰。 【参考方案1】:

实际上有很多方法可以编写与线程和 IO 相关的网络代码(请参阅http://www.kegel.com/c10k.html)。我猜传统的方式是创建一个线程来处理每个连接,在the Java tutorial 的底部进行了解释。这完全没问题,如果连接建立,做某事,然后关闭。

但是,如果您始终保持连接打开,您最终可能会创建过多的线程和开销。因此,其他方法。

另外,您应该考虑使用一些通用的 java 网络库。您可以实现自己的协议和通信模型,但仍然可以节省一些精力,并且最终可能会得到更好的代码。

【讨论】:

另外,这是一个相关问题***.com/questions/1215418/…

以上是关于没有任何框架的java p2p的主要内容,如果未能解决你的问题,请参考以下文章

C++ Winsock P2P

手机能不能实现p2p通信 在2.5G 或者3G环境。

我一直在尝试打孔并将数据报发送到路由器后面的朋友计算机,但没有任何反应

“P2P网络“在区块链当中扮演的角色

没有端口/转发的 C# P2P

[计算机网络-应用层] P2P应用