1

나는 IP 주소의 긴리스트를 ping하는 프로그램을 만들고있다. 현재 핑 (ping) 할 데이터베이스가 약 250 개이며 모든 것을 처리하는 데 오랜 시간이 걸립니다. 프로그램은 또한 상태가 변경 될 때 전자 메일 알림을 전송합니다 (실패한 것에서부터 성공한 것 또는 그 반대의 경우). 최악의 경우 각 핑에 2 초가 걸립니다 (실패 할 경우). 따라서 일반적으로 전체 프로그램을 돌아가려면 약 8 분이 걸립니다.

가능하다면 이메일 알림을 실시간에 더 가깝게하고 싶습니다. ping 함수를 비동기 적으로 호출하면 이전에 발생한 응답을 기다리지 않고 더 빠르게 호출 할 수 있습니까? 나는 어떤 종류의 비동기 프로그래밍에 익숙하지 않으며, 이것이 이것을 사용하기에 적절한 상황인지 확신 할 수 없다.

그렇다면 이것으로 시작하기위한 리소스를 향한 모든 포인터가 많이 감사하게 될 것입니다!


  • 원시 소켓을 사용하여 Pinger 클래스를 직접 작성하는 경우 두 개의 스레드를 사용하여 ping 요청을 보내고 다른 하나는 수신 할 수 있습니다. 그렇게하면 몇초 만에 컴퓨터의 tausends를 핑 (ping) 할 수 있습니다. - L.B
  • 웹 또는 창? bcuz 많이 사용하는 것에 달려 있습니까? - Amit Joki
  • Windows 서비스 - eddie_cat
  • 어디서 달릴거야? 웹 서버 또는 PC에서? - Amit Joki
  • 안녕하세요, 나는 120 배경 스레드를 실행하는 응용 프로그램을 가지고, 각 스레드 소켓을 통해 원격 장치 (TCP)에 연결합니다. 나는 250 개의 쓰레드가 받아 들여질 것이라고 생각한다. 시도 해봐. - ilansch

1 답변


1

네트워크는 1 초 미만의 250 ping 전송을 지원해야합니다. 비동기 IO를 사용하여 모든 핑을 한 번에 시작해야합니다.Task.WaitAll결과를 수집합니다. 그렇게하면 2 초 이내에 완료됩니다.

250 개의 작업 항목으로 비동기 IO를 사용하는 솔루션을 강력하게 선호합니다. 원하는 경우 스레드를 사용할 수 있습니다.

비동기 메소드 확인Ping수업에서 제공합니다. 에 대한 학습async/awaitTask. 이것은 그들에게 좋은 유스 케이스이다.


  • 고마워, 내가 물어 본거야. - eddie_cat

연결된 질문


관련된 질문

최근 질문