2012-07-19 2 views
3

현재 ftp를 통해 다른 로그를 보내는 시스템 로깅 프로그램을 작성 중입니다. 내가 직면 한 문제는 내 프로그램이 다른 프로그램에서 연결을 사용하려고 할 때 패킷 보내기를 중지하기 위해 업로드 전과 도중에 연결이 사용되고 있는지 지속적으로 확인해야한다는 것입니다.모바일 연결에서 Tcp/IP 사용 C#

사실 내가이 연결의 속도를 측정하는 데 도움이되는이 link을 찾았지만, 뭔가가 이미 스트리밍되고 있는지를 발견하기 위해 후자 만 사용할 수 있다고 생각합니다. System.Net.NetworkInformation의 라이브러리 항목을 읽은 후 다양한 네트워크 통계 및 상태를 확인하는 데 문제가 없었습니다. 미리 말했듯이 내 유일한 문제는 다른 프로그램이 뭔가를 보내고 싶어하는지 확인하는 것입니다.

질문에서 알 수 있듯이, 나는이 주제와 상당히 후배 프로그래머에게 아주 익숙하다. 나는 System.Net.NetworkInformation 네임 스페이스 라이브러리를 읽고 다양한 클래스, 메소드 및 위임자를 돕고있다. 나는 옳은 길에 있다는 느낌을 가지지 만 거기에 가지 않는다. 누구든지 올바른 방향으로 추진력을 얻었습니까?

감사합니다.

+0

염두에두고있는 특정 모바일 플랫폼이 있습니까? –

+0

TCP/IP는 여러 동시 연결을 지원합니다 (다른 소켓에도 불구하고). 다른 프로그램에서 사용할 수 있도록 연결을 끊어야하는 이유는 무엇입니까? –

+0

Windows 7 또는 XP의 내장 버전입니다. 기본적으로 두 개의 다른 프로그램이 주로 tcp/ip 연결을 사용합니다. 다른 프로그램 중 하나에 연결이 필요한 경우 정보 로깅 스트림 전송을 중단해야하는 소켓에 대해 알고 있습니다. 그게 이해할 수 있습니까? –

답변

1

System.Net.NetworkInformation 라이브러리 및 그 방법을 사용하여 끝났습니다.

GetIsNetworkAvailable(), NetworkChange.NetworkAvailabilityChanged Eventhandler 및 TcpStatistics 메서드를 사용하면 연결 정보를 얻을 수있었습니다. MSDN 및 참고 자료는 앞서 언급 한 방법을 사용하는 데있어 훌륭한 지침이며 기본적으로 약간의 수정을 가한 예제를 사용하여 필요에 맞게 사용했습니다.

MSDN NetworkInformation : http://msdn.microsoft.com/de-de/library/system.net.networkinformation.aspx

GetIsNetworkAvailable 꽤 똑바로 앞으로가되고 아래로 연결 부울 값을 반환합니다.

Networkchange.NetworkAvailabilityChanged는 연결이 끊어 지거나 다시 연결될 때 이벤트를 트리거합니다. 위의 msdn 링크에서 사용법에 대한 우수하고 유용한 예제를 참조하십시오.

그리고 TcpStatistics는 수락 된 연결, 시작된 연결 수, 수신 된 연결 수, 연결 실패, 연결 다시 설정 등의 정보를 반환합니다. 이것들은 연결을 평가하기 위해 내가 지금까지 사용해 왔던 5 가지입니다.

연결을 효율적으로 모니터링 할 필요가 없다는 것을 깨달았습니다. 아마도 NetworkInterface.GetAllNetworkInterfaces() 메서드는 어떤 Networkadapter가 데이터를 보내고 있는지를 알아내는 데 도움이 될 수 있으므로 모니터링해야합니다.

나는 이제 내 질문에 Peter Ritchie의 의견을 이해합니다. FTP 전송은 매우 잘 실행되며 프로토콜은 파일 전송을 완벽하게 처리하며 로그 파일을 스트리밍 할 때까지 문제가 발생하지 않았습니다. 테스트 4 주 동안 나는 로깅 데이터를 지속적으로 받았습니다.

+0

귀하의 응용 프로그램이 배터리 수명에 어떤 영향을 미치는지 궁금합니다. – LamonteCristo

+0

응용 프로그램이 구급차의 자동차 배터리에 연결된 PC에서 실행되므로 배터리가 실제로 문제가되지 않습니다. –