윈도우 운영체제 자체가 불가능한 환경입니다.
1.쓰레드를 만들어 무한 반복하게 해도, 1회 실행한후 재실행 시간차가 16ms정도입니다
2.윈도우 운영체제 자체도 들어온 패킷을 확인하고 응용 프로그램에 전달하는 시간이 추가로 소요됩니다
따라서 불가능합니다
금목암 님이 쓰신 글 :
: [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 서버처럼 빠른 회신을 주고자 합니다
: =============
: [응답 받자마자 회신]
: void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, const TIdBytes AData,
: TIdSocketHandle *ABinding) // 수신 부분 수신 이벤트 발생시 이곳으로 온다
: {
: AnsiString Buffer2;
: Buffer2=IdUDPServer1->ReceiveString(); //버퍼에서 읽어들인다
: IdUDPClient1->Send("test"); // 상대편에 응답을 보낸다
: }
:
:
|