[udp 통신]udp통신에서 응답속도를 빠르게 하는 방법 ?
추운 날씨에 건강들 주의하세요
질문내용은 아래 사항이 가능한가 입니다
udp 서버와 클라이언트 컴포넌트를 설정후
192.168.10.100 에 5001번 포트로 들어온 38바이트 값을 검사한후
이 패킷을 보내온 ip의 5001번 포트로 응답을 20바이트 보내주는데
처음에는 c#으로 작성해서 처리하면서 시간을 측정해보니 1~20ms정도
나옵니다 보통은 1~4ms 이내 지만 간혹 시간이 길어지는데 이게 윈도우 문제라고
하더군요 콘솔모드로 작성했습니다
네트워크는 1Gbit 망입니다
그래서 c++builder indy 콤포넌트로 작성하니 처리후 응답시간이
0.1ms~ 0.4ms로 약 10배 정도 빠르게 되었지만 (평균 160us)
응답 데이터를 가끔 놓친다고 해서 ..
저쪽에서는 2us~ 20us로 50배 정도 더 빠르게 처리해 달라고 하더군요
그래서 저쪽 장비를 연결하고 wireshark 로 캡처해보니
정말 그런 속도로 응답 처리를 해서 이건 micom에서 처리한다고 하는데 ..
(평균 2~10 us로 응답 처리함)
pc에서 windows10 64비트 8기가 ram i7 8th cpu 속도로 응답 처리하려면 어떻게 해야 할지
모르겟네요 ? 일단 pc환경에서 가능한지 확인하고 답변해줘야 할것 같습니다
네트워크는 1기가 full duplex설정 입니다
echo 서버처럼 빠른 회신을 주고자 합니다
일단 더 분석해봐야 겠지만 기존 프로그램이 윈도우 7 환경에서 1us응답을 하네요
디바이스 드라이버는 아닌것같고 서비스 쪽에 뭔가 떠있는데 이것을 이용하는것 같습니다
=======================================================================
[응답 받자마자 회신]
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, const TIdBytes AData,
TIdSocketHandle *ABinding) // 수신 부분 수신 이벤트 발생시 이곳으로 온다
{
AnsiString Buffer2;
Buffer2=IdUDPServer1->ReceiveString(); //버퍼에서 읽어들인다
IdUDPClient1->Send("test"); // 상대편에 응답을 보낸다
}
|