2013-07-03 3 views
1

포트 514의 UDP에서 syslog를 읽으려고합니다. 저는 IdUDPServer를 설치하고 DefaultPort를 514로 설정하고 1024로 BuffeSize를 설정합니다. 이 syslog는 Cisco 방화벽 5505에 의해 생성됩니다.ping을 보내는 중입니다. 내 방화벽이 명령처럼. Ping 192.168.1.100 -t kiwi (syslog 메시지를 모니터링하는 소프트웨어)를 실행하면 각 핑에 대해 2 개의 메시지가 표시됩니다.델파이에서 Cisco 방화벽의 syslog 메시지를 완전히받는 방법?

퍼센트 ASA-6-302021 : faddr 192.168.1.4/1 gaddr에 대한 분해 ICMP 연결 192.168.1.100/0 LADDR 192.168.1.100/0 % ASA-6-302020 : faddr에 192.168.1.4을위한 내장 인바운드 ICMP 연결/1 gaddr 192.168.1.100/0 laddr 192.168.1.100/0

내 Listener에서 각 핑에 대해 하나의 메시지 만 얻습니다. like % ASA-6-302020 : faddr 192.168.1.4/1 gaddr에 대한 인바운드 ICMP 연결 내장 192.168.1.100/0 laddr 192.168.1.100/0

왜 내가 첫 번째 메시지를 가져올 수 없는지 모르겠다. 내 청취자의 메시지. 는 내가 무엇을해야 IdUDPServer

procedure TMyTestOnSyslog.Listener514UDPRead(
    AThread: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle); 
var S:string; 
    i:Integer; 
begin 
    S:=''; 
    for i := 0 to High(AData) do 
    S:=S+chr(Adata[i]); 
    ... 
end; 

의 OnRead 이벤트에이 같은 내 코드를 작성? : D

+0

난 내 코드로 해결하고 테스트 해보십시오. 내 목록에 302021 오류 메시지가 표시되지만이 시간에는 302020이 없습니다! 나는이 두 메시지가 IdUDPServer가 둘 다 읽을 수 없기 때문에 같은 시간에 왔기 때문에 나는 생각한다. 하지만 어떻게 해야할지 모르겠다. – Loghman

+1

대신 'TIdSysLogServer'를 사용해보십시오. 기본적으로 포트 514에서 수신 대기하는 특수 구성 요소입니다. 새 메시지가 수신 될 때마다 OnSysLog 이벤트를 트리거합니다. 시스코 방화벽을 설정하여 응용 프로그램이 실행중인 시스템의 IP 주소로 SysLog 메시지를 전달할 수 있습니다. – LightBulb

+0

문제는 TIdSysLogServer 자체가 TIdUDPServer에서 상속된다는 것입니다. 필자는 TIdSysLogServer를 테스트하여 동일한 결과를 얻었습니다. : – Loghman

답변

0

나는 내 친구 중 한 명을 불러이 문제에 대해 물었을 때 실망했다. Delphi에서 Indy를 사용하지 않는 것이 좋다고 말했습니다. 왜냐하면 그것은 부끄럽기 때문입니다. 그래서 다른 구성 요소를 검색했습니다. 오픈 소스가있다. ICS (Internet Component Suite)는 잘 작동합니다. 당신은 델파이 버전이나 C++ 빌더를위한이 오픈 소스를 얻을 수 있습니다! 제품의 일부를 선택 ICS에 http://www.overbyte.be/

당신은 최신 버전을 다운로드 할 수 있습니다

이를 참조하십시오. 다행히도 많은 구성 요소가 있으며 TSysLogServer가 있습니다. 그것은 UDP의 패킷을 잃지 않습니다. UDP가 패킷 손실을 보장하지 않는다는 것은 사실입니다. 그러나 키위와 wireshark와 같은 다른 프로그램이 패킷을 제대로 받으면 내 프로그램에서 문제의 원인이 구성 요소임을 알아야합니다.

내 질문에 대한 답변은 이므로 인디를 사용하지 마십시오 !!!

델파이의 인디는 이와 같은 문제가 있거나 다른 언어의 문제가 동일하다는 것을 잘 모릅니다. : |

+0

Indy와 ICS는 공개 소스이므로 개발자 커뮤니티에서 버그 패치를 제공 할 수 있습니다 .Inb의 이후 버전에서 UDP 문제가 이미 해결되었을 수 있습니다. 첫 번째 작업은 라이브러리를 업데이트하여 버그가 있는지 확인하는 것입니다 – mjn

+0

좋은 라이브러리'ararat.cz Synapse' –

+1

재미 있군 ... Indy가 상업용 ICS에 대한 오픈 소스 대안으로 만들어졌고 지금은 사람들이 다시 마이 그 레이션하기 시작했다 :-) –

관련 문제