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

我正在编写一个应用程序来分享内容.你有一个“同行”列表.您可以选择其中一些,然后就可以开始共享内容(文本和二进制数据).在局域网上,如果输入其他人的IP地址,则可以进行通信.

我有几个问题

>是否有一些模式来编写这种类似聊天的应用程序,可以发现谁在线,谁不在线(本地和互联网)?我知道可以使用集中式服务器来完成所有连接,但是如果你在局域网上则分散.
>当连接到在线客户端时,他们大多数没有IP地址,但是相当落后于防火墙和东西,显然IP地址不是机器的地址,一些端口将被阻止.这是怎么回事?

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

任何建议将不胜感激.

问候

解决方法

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

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

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

相关文章

一.C语言中的static关键字 在C语言中,static可以用来修饰局...
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针...
浅谈C/C++中的指针和数组(一)指针是C/C++...
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时...
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下...
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面...