我正在尝试在.NET框架上创建一个聊天应用程序,该应用程序能够通过互联网和而不是只是LAN。我希望它是 P2P ,因为不需要中央服务器。我不介意它使用哪种协议(UDP,TCP等),只要我能向几乎任何给定的IP发送消息。
我想知道的是如何将数据发送到我知道的另一个IP,没有别的。我已经四处搜索,但代码对我来说太复杂了。 (例如,我查看了torrent客户端的源代码)。
非常感谢帮助。
P.S。:我已经听说过一种称为UDP打孔的方法,如果它会引发任何插头。
答案 0 :(得分:1)
您的计划存在一个小问题。
以服务器为中心的方法不仅仅作为一个缓慢的中间人,而且还作为连接到已知地址的中心点,海上的锚点连接到客户端并且客户端连接到静态IP /名称服务器
通常,用户不关心他们在互联网上的IP地址是什么......
所以至少,服务器很适合获取客户端列表。 现在,您可以使用Microsoft或Google或其他服务。
现在NAT之间客户端的其他P2P通信带来了更多的学习:TCP_hole_punching
我建议阅读所有内容,然后寻找一些代码或库来实现它。
以下是与您相似的旧主题,寻找打孔库:tcp hole punching library
答案 1 :(得分:0)
我在Peer-to-Peer application using java回答了类似的事情,如果有帮助或者您对此有任何具体问题,请告诉我。基本上您需要NAT遍历,因此您可以根据需要找到许多不同的方法来实现此目的。即使你可以通过启用UPnP来简单地配置你的路由器。