2011-12-30 3 views
3

명시 적 서버를 사용하지 않는 간단한 채팅 응용 프로그램을 만들고 싶습니다. 주요 요구 사항은 사용자가 많은 친구들과 동시에 채팅 할 수 있다는 것입니다 (Skype 등). 나는 여기에서 컨퍼런스 채팅을 의미하는 것이 아니라 단지 여러 개의 개별 채팅 창을 의미합니다.C# P2P 채팅 응용 프로그램 디자인

현재 저는 LAN 메시징 응용 프로그램 만 원하지만 디자인이 인터넷 연결로 확장하기 쉽다면 고맙겠습니다.

그런 응용 프로그램에 적합한 디자인이 궁금합니다. 그/그녀가 말하는 각 친구 하나 -

  • 는 각 사용자의 응용 프로그램이 TcpListener (암시 적 서버) 및 여러 TcpClient 개체가 용액에 대해 어떻게 생각하십니까.
  • 원격 사용자를 인증하는 방법은 무엇입니까? 채팅 응용 프로그램은 인증서를 생성해야합니다 (X509 또는 STH) 또는 단지 LAN에서 사용자가 : 신뢰할

친절한 안부

+0

내가 당신의 AP를 생각 코딩

해피 좋은 출발점을 증명 TCP 연결이 진행되는 한 프로 시저가 정상입니다. –

+2

TcpListener 및 TcpClient와 관련된 "솔루션"은 방화벽/NAT 비 호환성 때문에 실행 가능/확장 가능하지 않습니다. –

답변

3

HttpListener + WebClient(or HttpWebRequest) 당신에게 인증을위한 많은 서비스를 제공 할 수 있다고 가정 /보안. 기본 인증, Ntlm, Windows 통합 인증, https 등.

+0

HTTP를 통한 채팅이 정상입니까? 그것은 WebService처럼 들리지만 .. 앱이 아닌가 ?? – Queequeg

+0

왜 안 되니? TCP를 통한 텍스트 기반 프로토콜. HttpListener는 TcpClient보다는 TcpListener 및 WebClient와 많이 다르지 않습니다. WebCLient를 사용하여 모든 데이터 바이너리/텍스트를 게시하고 HttpListener에서 읽습니다. TcpListener를 사용하면됩니다. –

+0

클래스 변경 외에도 인스턴스의 다양성은 괜찮습니까? 하나의 HttpListener와 많은 HttpWebClients를 의미합니까? – Queequeg