문제

UDP를 통해 20 개의 사용자 지정 하드웨어 상자에서 데이터를 수신하는 PC 프로그램이 있습니다. 이 상자 각각은 계속해서 UDP 메시지를 PC의 단일 UDP 소켓으로 보냅니다. 메시지에는 모두 10-150 바이트의 데이터가 포함되어 있으며 각 장치는 12 초 안에 약 20 개의 메시지를 보냅니다.

테스트에 따르면 일부 메시지는 PC에서 누락 된 것으로 나타났습니다. 네트워크의 상자가 적으면 누락 된 메시지가 줄어 듭니다.

장기 솔루션은 하드웨어의 데이터를 버퍼하고 TCP를 통해 필요한대로 PC가 데이터를 검색하도록하는 것이지만 해당 솔루션을 배포 할 수있을 때까지 누락 된 메시지 문제를 해결/최소화해야합니다. 아이디어 포함 : - PC 업그레이드 - 전송 전에 불필요한 메시지 필터링 - 하드웨어의 별도 UDP 메시지를 단일 더 큰 하나로 결합하여 PC의 여러 소켓을 사용하여 메시지를 수신합니다.

이 아이디어에 대한 피드백과 우리가 놓친 것들에 대한 피드백을 찾고 있습니다.

수신 프로그램은 Indy9를 실행하는 C ++ 빌더 프로그램입니다.

도움이 되었습니까?

해결책 3

제안해도 다른 사람에게 감사하지만, 참조하는 사람은 누구나 사용 된 오래된 PC (512MB RAM의 1.6GHz Celeron)를 올바른 사양 기계 (2GB RAM의 2GHz 코어 2 프로세서)로 대체하는 것이 었습니다.

다른 팁

UDP의 삭제 된 메시지는 네트워크의 순 혼잡과 관련이 있습니다. 패키지를 받기 위해 1 또는 5 소켓을 사용하는 경우에는 할 일이 없습니다.

또한 20 개의 상자 만있는 경우 12 초 안에 20 개의 메시지를 보냅니다. 이것은 초당 33 개의 메시지만을 의미합니다. 이것은 실제로 네트워크와 프로세서를위한 땅콩입니다.

따라서 패키지가 삭제되는 유일한 이유는 다른 네트워크로드가 많이 발생하기 때문입니다. 네트워크 카드와 라우터는 UDP보다 TCP-IP 패키지를 선호하는 경향이 있습니다.

과도한 네트워크로드가 발생하지 않으면 UDP 패키지를 삭제해서는 안됩니다.

가장 큰 문제는 네트워크에 있습니다.

네트워크는 이미 개인 LAN이라고 말했습니다.이 제안 중 하나를 제거하고 다른 하나는 네트워크가 전환되도록하는 것입니다. 허브는 패킷을 쉽게 잃을 수 있습니다.

도움이되지 않으면 PC에서 수신 버퍼 크기를 늘릴 수 있습니다.http://www.developerweb.net/forum/showthread.php?t=5773

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top