2009-12-28 4 views
0

간단한 클라이언트/서버 채팅 응용 프로그램을 만들고 싶습니다.C#에서 클라이언트/서버 채팅 클라이언트 만들기

한 클라이언트가 서버에 메시지를 보내면 서버는 다른 클라이언트에게 변경 사항을 알립니다.

방화벽 문제를 처리하지 않고 가장 좋은 방법은 무엇입니까?

http 이상의 웹 서비스로 수행 할 수 있습니까?

답변

1

wsHttpBinding 또는 basicHttpBinding의 WCF 서비스는 방화벽과 잘 어울립니다. 가장 큰 문제는 클라이언트에게 방화벽 설정을 수정할 필요가 있음을 알리는 것입니다.

0

서버에서 HTTP 서버를 실행하고 각 클라이언트에서 연결을 열어 둘 수 있습니다.

0

당신은이 혜성 스타일의 웹 서비스를 사용하여 수행 할 수 있습니다 : 당신은 WCF를 사용하여 서비스를 구축하는 경우, 당신은 이중 바인딩과 포트 80에서 실행되는 서비스를 구현하는 것이

COMET (programming)

.

Duplex Services (MSDN)

1

서버는 포트에서 수신 대기해야합니다. 해당 포트는 방화벽을 통해 액세스해야합니다. 이 두 가지는 피할 수없는 것입니다. 일반적으로 서버가 포트 번호를 수신 대기하게합니다 (충돌을 피하기 위해 1024보다 큼). 그런 다음 방화벽이 해당 포트를 서버로 전달하게합니다.

평범한 사람들이 서버를 호스팅 할 것으로 예상된다면 일이 조금 까다 롭습니다. 홈 라우터에서 포트 포워딩을 사용하도록 설정해야하거나 중매를 위해 중앙 집중식 서버가 있어야합니다.

Skype 또는 Halo가 작동하는 방식으로 Skype가 중앙 서버를 슈퍼 노드라고합니다. 다음은 그 예입니다.

C는 중앙 Skype 서버입니다. A는 Alice이고 B는 bob입니다. Alice는 Bob에게 전화하기를 원합니다.

C는 어떤 포트에서 수신와 C의 방화벽은 B
호출 할 말을 스카이프에
로그, 스카이프로 C
B 로그에 연결하는 C
에 connecticg을 통해 A가 C에게 메시지를 보내는 할 수 있습니다 C가 B에게 메시지를 보냅니다 (B가 이미 연결되었으므로 확인 됨).

일단 전화가 연결되면 A와 B는 모든 메시지를 C로 보내고 C는 메시지를 대상으로 전달합니다.