2011-02-07 3 views
1

간단한 응용 프로그램에서 wcf P2P 설치를 구현했습니다.P2P가 연결되지 않으면 클라이언트에서 "다시 시작"하는 방법

제 질문은이 문제를 여러 클라이언트에서 테스트 한 결과입니다. 10 번 중 9 번, 모든 클라이언트가 메시로 동기화되고 문제없이 연결됩니다.

그러나 클라이언트를 닫은 다음 다시 열면 클라이언트가 메시에 다시 연결되지 않습니다. 다른 클라이언트는 그것을 보지 못합니다.

제 질문은이 클라이언트에서 p2p를 닫고 다시 열면 어떻게 다시 연결을 시도 할 수 있습니까? 아마 타이머가 매분마다 연결되어 있지 않으면 문제가 있다고 가정하여 P2P 종단점을 닫은 다음 다시 열어서 모든 것을 새로 고칩니다.

내가이 클라이언트를 닫은 다음 다시 열면 메쉬에 다시 연결되므로이 질문을드립니다.

바보 같은 연결이 필요합니다. 예를 들어, 클라이언트를 열면 클라이언트는 다시 시작해야하는지 아니면 일정 시간이 지나면 연결이 끊어 지는지 파악하여 연결을 "플러시"하고 다시 작성하려고 시도합니다.

의미가 있습니까?

답변

1

단순히 혼자가 아닌 알 수없는 오류 상태로 인해 메쉬에 연결되어 있지 않다고 판단하기가 어려울 수 있습니다.

피어 채널의 IOnlineStatus 속성은 메시가 혼자 있는지 (false) 또는 피어를 연결했는지 (true) 알 수 있습니다. 당신은 너무 같은 상태 변경 이벤트에 대해 등록하여이 속성을 얻을 수 있습니다 :

IOnlineStatus status = myPeerChannel.GetProperty<IOnlineStatus>(); 
status.Online += new EventHandler(MyOnlineEventHandler); 
status.Offline += new EventHandler(MyOfflineEventHandler); 

그래서 나는 당신의 온라인 상태를 확인하고 타이머를 가지고하는 것이 작업을 수행하는 방법을 가정 당신의 X 금액 이상을 가면 채널을 삭제하고 새 채널을 만들 때 오프라인으로 전환됩니다.

+0

내가 그 타이머로 끝내 었습니다. 그것은 제대로 작동하는 것으로 보인다 지금까지 연결을 다시 설정에 100 %의 성공률이 있습니다. – Nate