运维开发网

c#peer to peer programming(最好是分散的)

运维开发网 https://www.qedev.com 2020-03-20 10:19 出处:网络 作者:运维开发网整理
我正在编写一个应用程序来分享内容.你有一个“同行”列表.您可以选择其中一些,然后就可以开始共享内容(文本和二进制数据).在局域网上,如果输入其他人的IP地址,则可以进行通信. 我有几个问题 >是否有一些模式来编写这种类似聊天的应用程序,可以发现谁在线,谁不在线(本地和互联网)?我知道可以使用集中式服务器来完成所有连接,但是如果你在局域网上则分散. >当连接到在线客户端时,他们大多数没有IP地址,但
我正在编写一个应用程序来分享内容.你有一个“同行”列表.您可以选择其中一些,然后就可以开始共享内容(文本和二进制数据).在局域网上,如果输入其他人的IP地址,则可以进行通信.

我有几个问题

>是否有一些模式来编写这种类似聊天的应用程序,可以发现谁在线,谁不在线(本地和互联网)?我知道可以使用集中式服务器来完成所有连接,但是如果你在局域网上则分散.

>当连接到在线客户端时,他们大多数没有IP地址,但是相当落后于防火墙和东西,显然IP地址不是机器的地址,一些端口将被阻止.这是怎么回事?

PS:

我已经在这个问题上阅读了很多stackoverflow页面.有人说这是可能的,有人说不是.现在真的确定要采取哪一个.有些甚至有关于c#bit torrent客户端和服务器的信息.只要我能在.net中做到这一点,我就非常乐于接受建议.

(c#,f#,vb都可以)

任何建议将不胜感激.

问候

发现意味着一个终点必须能够找到其他终点.在LAN上,如果在网络层上允许广播(UDP),则可行.典型情况是SNMP管理器广播SNMP GET消息,并查看同一网络中有多少SNMP代理响应.这是分散的,因为没有中央登记点,其中存储了所有端点的列表.

然而,超越局域网意味着没有像广播这样的简单方法来寻找其他终点.然后需要集中解决方案.

因此,请进一步总结所有层(应​​用程序,网络等)中应用程序的方案,以了解是否有可用的分散式解决方案.此外,当您在某处阅读其他人的结论时,您还应该注意他/她提到的特殊情况.这些结论可能仅对这些情况有效.

0

精彩评论

暂无评论...
验证码 换一张
取 消