2008-09-25 5 views
2

나는 직원의 입/출퇴근 시간을 맞추기 위해 서버의 웹 서비스에 연결하는 C#으로 시간 초과 응용 프로그램을 만들었습니다. 응용 프로그램은 시스템 트레이에 상주하며 사용자가 시스템을 종료/일시 중단하거나 마지막 활동시 시계를 3 시간 이상 유휴 상태로두면 사용자에게 시간을줍니다..NET에서 서버에 연결할 수 있는지 확인하는 가장 좋은 방법은 무엇입니까?

사용자가 잠자기 상태 (SystemEvents.PowerModeChanged 이벤트가 발생 함)에서 시스템을 다시 가동 시키면 응용 프로그램이 직원을 다시 시동하려고 시도하지만 네트워크 연결이 완전히 초기화되지 않은 문제가 발생합니다. 시간과 웹 서비스 호출 시간이 초과되었습니다.

명백한 해결책은 해킹 임에도 불구하고 시계에 지연을 넣는 것이지만 이것이 전체적으로 문제를 해결하는 것은 아닙니다. 내가 뭘 하려는지 일종의 "잔인한"시계의 일종이다. 서버가 실제로 시계를 넣을 때까지 서버를 볼 수있을 때까지 기다릴 것이다.

웹에 연결되어 있는지 확인하는 가장 좋은 방법은 무엇인가? 서비스를 만들 수 있습니까?

답변

3

가장 좋은 방법은 실제로 연결을 만들고 오류를 잡으려고하는 것입니다. 머신에 ping을 할 수는 있지만 머신이 실행 중이고 네트워크 상에있는 경우에만 알려주며, 웹 서비스가 실행 중인지 여부를 반드시 반영하지는 않습니다.

+0

핑 (ping)은 반드시 그렇게 많이 말할 필요조차 없다. –

+0

참. 서버가 일반적으로 ping 요청에 응답하지 않으면 쓸모가 없습니다. –

0

이벤트를 처리 할 때 성공할 때까지 루프 할 방법에 연결 코드를 입력하고 오류를 catch 한 후 다시 시도하십시오.

개별 시스템 및 실행중인 다른 응용 프로그램에 따라 지연이 완벽하지 않은 경우에도 네트워크 연결을 다시 설정할 수있는 시간이 많이 걸릴 수 있습니다.

0

문제가 네트워크 서비스를 다시 설정하는 데 대기 시간 인 경우 Ping가 해결책입니다. 그것은 누군가가 집에

있는지 확인하기 위해 초인종을 울리는처럼

ping이 성공하면, 다음 적절하게 예외를 잡기, 웹 서비스를 호출하려고

0

구현 (나는/응답이 SocketException이와 SoapException 모두 준비에 따라 발생할 수 있다고 생각) 메시지를 게시하고 스레드가 주기적으로 메모리 내 대기열을 웹 서비스로 플러시하려고 시도하는 대기열.

0

웹 서비스 포트가 열려 있어도 Ping을 비활성화 할 수 있습니다. 나는이 방법을 사용하지 않을 것이다. ...

관련 문제