계속 질문만하게 되는 것 같군요....
고수님들 죄송합니다...
현재 모니터링용 프로그램을 개발하고 있는데요
모니터링 전문을 받아서 파싱을 하는데 도저히 해결이 안되는 부분이 있어서리
이렇게 질문을 드립니다...
먼저 전문 포맷은 다음과 같습니다...
---------------------------------------------------------------------------------------------------------------
IP Address : 4Byte(XXX.XXX.XXX.XXX을 각 1Byte로 전송)
Port : 1Byte(1에서 16의 숫자를 1Byte로 전송)
OnTime : 2Byte + 9Byte(2Byte는 1970년 1월 1일을 기준으로 일수, 9Byte는 시분초밀리초)
OffTime : 2Byte + 9Byte(2Byte는 1970년 1월 1일을 기준으로 일수, 9Byte는 시분초밀리초)
---------------------------------------------------------------------------------------------------------------
그리고 전송을 담당하는 서버측에서는
sprintf(buf, "%c%c%c%c%c%u%s%u%s", 203, 233, 233, 233, PortNbr, SystemDateValue, OnTime, SystemDateValue, OffTime);
로 메세지를 만들어서 전송을 합니다...
그리고 수신을 담당하는 클라이언트측에서는
구조체로 수신을 받도록하였습니다...
---------------------------------------------------------------------------------------------------------------
<!--CodeS-->
type
TMonitorTime = record
SystemDate : Word;
SystemTime : array[0..8] of Char;
end;
type
TMonitorMessage = record
IPAddress: array[0..3] of Byte;
Port : Byte;
OnTime : TMonitorTime;
OffTime : TMonitorTime;
end;
<!--CodeE-->
---------------------------------------------------------------------------------------------------------------
로 만들어서
---------------------------------------------------------------------------------------------------------------
IntToStr(strIPAddress1)+'.'+IntToStr(strIPAddress2)+'.'+IntToStr(strIPAddress3)+'.'+IntToStr(strIPAddress4) + ' [' + IntToStr(intTerminalServer) + '][' + IntToStr(intPort) +'] ' + strOnTime + ' / ' + strOffTime;
---------------------------------------------------------------------------------------------------------------
로 출력을 하면 OnTime과 OffTime측에서 밀리는 현상이 발생합니다....
도대체 어느부분에서 잘못이 있는 걸까요....
오늘 오후내내 이것 때문에 정신이 하나도 없습니다...
잘못된 부분이 있으면 알려주시고요
이 방법말고 더 좋은 방법이 있다면 가르쳐 주세요... 예제도 포함.... *^^*
부탁드리겠습니다....
그럼 남은 하루 즐거운 시간 보내세요.....
PS. 개발툴은 D7입니다....
델파이의 자동정렬때문에 그런것 같네요...
record대신에 packed record를 쓰세요...
<!--CodeS-->
TMonitorTime = packed record
...
end;
<!--CodeE-->
^^ 항상 즐코하세요...