2011-02-23 5 views
1

두 개의 클라이언트가있는 서비스가 포함 된 솔루션이 있습니다. 그들은 서로 의사 소통하고, 메시지를 보내고, 사건을 일으킬 수 있습니다. 한 컴퓨터에서 테스트 할 때 잘 작동하지만 다른 컴퓨터에 설치하면 인터넷이 연결되고 서로 찾지 못합니다. 나는 내 서비스를 스스로 접대하고 있기 때문에 이것이 이유 일 수 있겠는가? DuallHttpBinding을 바인딩 구성으로 사용합니다. 내 상황은 인터넷 연결 이외의 네트워크 연결없이 각각 다른 컴퓨터에서 실행되는 두 개의 클라이언트 인스턴스와 하나의 서비스가있는 채팅 응용 프로그램입니다.다른 컴퓨터에서 WCF 채팅 응용 프로그램 테스트

+0

네트워킹은 복잡한 문제입니다. 몇 가지 이유가있을 수 있습니다 : 서버에 연결하지 않음, 포트 차단 (클라이언트 또는 서버), 잘못된 디자인 등. –

+0

더 많은 현재 바인딩 구성을 설명 할 수 있습니까? –

+0

당신은 더 구체적 일 수 있습니까? 우리가 디자인 타임에 이런 일이 생기려면 어떤 종류의 구성을 지정해야합니까, 그렇지 않으면 WCF가 자동으로이 작업을 수행 할 수 있어야합니까? –

답변

0

DualHttpBinding을 사용하려면 두 클라이언트가 연결을 열고 서로 메시지를 보낼 수 있어야합니다. 대부분의 클라이언트 중 하나는 들어오는 연결을 허용 할 수없는 방화벽, 포트가 전달되지 않은 NAT 라우터 또는 다른 클라이언트가 단순히 올바른 주소를 찾을 수없는 방화벽 뒤에 있습니다.

이러한 종류의 HTTP를 통한 직접 양방향 통신은 일단 인터넷에 연결되면 매우 어렵습니다. 그것을 디버깅하려면, 좋은 HTTP 디버깅 도구 인 Fiddler을 살펴 보는 것이 좋습니다. 연결을 감시하고 클라이언트가 연결할 수 있는지, 그렇지 않은 경우 왜 실패하는지 확인해야합니다. 그런 다음 연결 문제를 해결해야합니다.

확실한가요?하지만 당신의 바인딩으로 net.tcp를 사용하고 모든 클라이언트가 연결할 수있는 어딘가에 net.tcp가 없다면 오류가 발생하기 쉽습니다. 서버가 클라이언트에 포트를 다시 열 수있게하려면 기존 연결을 사용하여 보낼 수 있습니다. 클라이언트가 클라이언트에 두 번째 연결을 생성 할 수 있어야하는 서버가 아니라 서버에 연결하기 만하면되므로 표준 NAT 구성을 통해 작동합니다.

+0

고마워요. NetTcp 바인딩을 사용하는 서비스를 사용하는 클라이언트가 실제 네트워크에 있지 않고 인터넷을 연결 플랫폼으로 사용하지 않을 수 있습니까? 내 고객이 다른 나라의 고객이기 때문에 –

+0

예, 그들은 인터넷을 통해 서로를 볼 수 있어야합니다. 인터넷 클라이언트가 연결할 수있는 열린 포트를 가지려면이 한쪽 끝이 필요하지만 다른 클라이언트는 NAT 라우터 뒤에있을 수 있으며 여전히 작동합니다. 기본적으로 웹 서버를 구성하는 것과 같습니다. :) – Tridus

관련 문제