C#P2P聊天应用程序设计

C#P2P聊天应用程序设计,c#,tcp,chat,p2p,C#,Tcp,Chat,P2p,我想创建一个不使用显式服务器的简单聊天应用程序。主要要求是用户可以同时与许多朋友聊天(就像在Skype上一样)。我不是说这里有会议聊天,只是多个单独的聊天窗口 目前,我只想要一个LAN消息传递应用程序,但如果该设计易于扩展到Internet连接,我将不胜感激 我想知道什么设计适合这种应用 您认为一个解决方案怎么样?每个用户应用程序都有一个TcpListener(隐式服务器)和多个TcpClient对象,每个与之交谈的朋友一个 对远程用户进行身份验证怎么样?聊天应用程序应该生成一个证书(X509

我想创建一个不使用显式服务器的简单聊天应用程序。主要要求是用户可以同时与许多朋友聊天(就像在Skype上一样)。我不是说这里有会议聊天,只是多个单独的聊天窗口

目前,我只想要一个LAN消息传递应用程序,但如果该设计易于扩展到Internet连接,我将不胜感激

我想知道什么设计适合这种应用

  • 您认为一个解决方案怎么样?每个用户应用程序都有一个
    TcpListener
    (隐式服务器)和多个
    TcpClient
    对象,每个与之交谈的朋友一个
  • 对远程用户进行身份验证怎么样?聊天应用程序应该生成一个证书(X509或其他什么),还是仅仅假设LAN中的用户是可信的:)

最诚挚的问候,

HttpListener
+
WebClient(或HttpWebRequest)
可以为您提供更多的身份验证/安全工具。
基本身份验证、Ntlm、集成Windows身份验证、https等,它们对防火墙更加友好。

您应该看到从开始

希望这是一个好的起点


快乐编码

我认为就TCP连接而言,您的方法是合理的。您关于TcpListener和TcpClient的“解决方案”不可行/不可扩展,因为它的防火墙/NAT不友好。通过HTTP聊天可以吗?听起来像是一个网络服务。。不是应用程序??为什么不是?只是一个基于文本的TCP协议。HttpListener与TcpListener没有太大区别,WebClient与TcpClient也没有太大区别。使用WebCLient发布任何二进制/文本数据并从HttpListener读取,就像使用TcpListener一样。除了类的更改,实例的多样性还可以吗?意味着一个HttpListener和多个HttpWebClient?