UDP 수신 후 출력하는 프로그램에서 개행 문제가 발생하여 문의드립니다.
제어 프로그램을 통신으로 모니터링하는 간단한 프로그램을 작성 중입니다.
콘솔에 뿌리던 내용인데, 부하가 많이 걸리는 것 같아서
UDP를 이용하여 호스트로 전송하고 이를 수신하여 표시하려고 합니다.
호스트 쪽 프로그램은 Lazarus로 작업해 보고 있는데...
UDP 메세지를 수신하면 아래와 같은 동작을 수행합니다.
<!--CodeS-->
UDP1.GetMessage(str);
Memo1.Lines.Add(str);
<!--CodeE-->
문제는...본 메시지는 출력이 잘 되는데,
30줄 정도를 보냈을 때 출력한 아래로 1-20줄 정도의 개행이 생깁니다.
(다시 말씀드리면..빈 줄이 주루룩 출력이 됩니다. 예를 들면...
<!--CodeS-->
<Memo창의 내용 예>
Message1!
Message2!
Message3!
...
Messagen!
New Message1!
New Message2!
New Message3!
<!--CodeE-->
위 그림처럼 보내지 않은 빈 줄이 들어차게 되는데요.)
보내지 않은 줄인 건 맞는데, 뚜렷한 규칙을 찾기가 힘드네요.
구현상의 문제인지, Lazarus의 문제인지...델파이가 없으니 비교도 힘들구요.
송신단은 CPU 보드이고 C++으로 작성되었습니다 (STL의 string을 보내고 있습니다).
미리 감사 드립니다~ :)
UDP1.GetMessage(str);에서 타임아웃되어서 종료되고 이 때문에 str에는 아무 값도 설정이 안될것이고, 다음줄은 무조건 Memo1쓰도록 되어 있으니까 빈줄이 출력되는것 같습니다.
GetMessage(str)에서 받은 데이터가 없으면 출력을 안하도록 고치셔야 할듯하네요...