Q&A

  • UDP 로 받은 Bytes 을 파일로 저장할려고 합니다.
UDP 로  TS 파일을 송출하는 서버를 개발하였습니다.
그리고 나서 테스트용으로 "UDP 로 수신한 패킷을 저장하는 프로그램을 만들어봤는데,
패킷은 UDP 해더 빼고 사이즈대로 버퍼에 있는걸 저장하는 것 같은데,
저장된 파일이 play 가 안되네요. TS 포맷은 별도의 해더를 생성하지 않아도
되는게 아닌가요? 아니면 저장했을 때 다른 형태로 저장을 해야하나요?
아리송하네요 ㅜㅜ

<!--CodeS-->
procedure TForm.IdUDPServerUDPRead(AThread: TIdUDPListenerThread;
  AData: TBytes; ABinding: TIdSocketHandle);
var
  FileHandle: Integer;
begin
  try
    FileHandle := 0;
    FileHandle := FileOpen('a.ts', fmOpenReadWrite);

    if length(Adata) < 1310 then exit;

    FileSeek(FileHandle, fpos, 0);
    FileWrite(FileHandle, AData, length(AData));
    fpos := fpos + length(AData);
    Memo.Lines.Add(Format('%d position, Data length %d', [fpos, length(AData)]));
finally
    FileClose(FileHandle);
  end;

end;
<!--CodeE-->
2  COMMENTS
  • Profile
    땅콩맨 2010.03.14 10:06
    제 생각에는
    if length(Adata) < 1310 then exit;
    이 부분이 의심이 가네요. 1310이 1310 byte를 의미하는것 같은데
    1310 byte보다 적으면 FileSeek을 통해서 탐색하고 FileWrite도 파일에
    기록되는것 같은데 보통 동영상파일을 보면 1310 byte는 기본적으로 넘지않을까요?

    한번 확인해보세요...
  • Profile
    phono 2010.03.19 02:01
    AData 타입이 TByte 네요.. 이러면

    AData 타입이 일반 byte 형태는 아닐듯 하군요.

    AData.xxxx 형태로 해서 프로퍼티나 메소드 하나를 참조하셔야 할듯 합니다.

    제껀 인디가 9.18 버전이라.. read 이벤트에서는 이렇게 안넘어 와서리..

    함 다시 확인해 보세요
    • 땅콩맨
      2010.03.23 08:43
      제 생각에는 윈도우7에서 클래스가 호환이 안되서 그러는것 같은데요 새로운api가 있는지 살펴봐야될 것...
    • 홍성락
      2010.03.23 00:15
      Longint(A)로 하시면 되는데 이건 어떤 헤더의 주소라서 나중에 주소연산으로 구할때 많이 사용하는건데 ...
    • 땅콩맨
      2010.03.23 08:00
      Pbyte가 바이트를 포인터로 사용하는 거 맞나요?
    • 홍성락
      2010.03.23 21:54
      예 Pbyte는 byte값을가진 장소의 integer형 주소값만 있구요. 값을 참조시나 정렬등시 빠른 연산을 위해 ...
    • 땅콩맨
      2010.03.24 08:02
      아. 좋은 내용 감사드립니다. 위의 Comment중 일반 값을 넘기도 → 일반 값과 비교하여 아닌가요? ㅋ...
    • 홍성락
      2010.03.24 18:51
      ^^오타입니다. 일반 값을 (파라메터로)넘기거나, (값을) 복사하여 옮기는....
    • 땅콩맨
      2010.03.25 04:36
      일반 값과 비교하여 ㅋㅋ 제가 적은글을 다시 보니 웃음이... ^^;;
    • phono
      2010.03.22 21:37
      Active X가 있긴한데.., 하도 요즘 Active X를 까는 추세라..
    • 최진영
    • 2010.03.20 10:34
    • 4 COMMENTS
    • /
    • 0 LIKES
    • phono
      2010.03.21 02:26
      해당 데이터 셋의 프로퍼티에 보믄 AutoReflash 라는게 있을 겁니다. 사용해 보셨는지요?
    • 땅콩맨
      2010.03.21 05:13
      바로 업데이트가 이루어지는게 아니라면 타이머 컴포넌트를 이용하여 dbgrid의 refresh속성을 활성화 해...
    • 조용환
      2010.04.16 17:50
      UpdateSql을 사용해 보세요. tquery와 updatesql을 사용하여 디비그리드상에서 직접 데이타를 편집할...
    • 김용일
      2010.04.19 22:51
      이런 방법이 있었군요. 바쁘다보니 이런방법을 찾아보지도 못했는데 한 번 해 봐야겠네요.
    • 김동식
    • 2010.03.20 03:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2010.03.20 03:51
      같은 값입니다. 델파이에서 $20이하의 값은 표시안합니다. 실제적으로 아스키값 $20는 특수한 용도로 쓰...
    • 최용일
      2010.03.20 00:16
      Chr($1C) ShowMessage(Chr($1C));
    • 최용일
      2010.03.20 00:14
      콜백함수를 메소드에서 일반함수로 바꾸세요. procedure FrameDisplayProc(uID : UINT; uMessage : UI...
    • 헤메는별
      2010.03.22 21:54
      항상 감사드립니다. ^^
    • 땅콩맨
      2010.03.20 09:02
      delph 2010을 사용하지 않아서 자세한 답변은 힘들다고 생각이 들지만 그 아랫버저에서 다뤘던 subverso...
    • 치꼬
    • 2010.03.19 02:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 땅콩맨
      2010.03.19 19:59
      에러가 발생되는 소스를 첨부해주세요. 그래야 에러가 발생되는 원인을 알수있을테니깐요... 아니면...
    • 치꼬
      2010.03.19 23:18
      오류내용은 아래와 같습니다. Error:130 Failed to Retrieve Error Message from Print Engine. ...
    • 땅콩맨
      2010.03.20 07:57
      에러를 해결할 생각이 있으시다면 서점쯤 가는것이야 일이 되서는 안되겠죠?
    • 치꼬
      2010.03.22 18:18
      뭐.. 서점에 가는것이 무슨일이겠습니까... 문제는 그렇게하지 않도록 해결할수있는 방법이 있다면 더 ...
    • 최용일
      2010.03.18 01:10
      제대로 하신것 같은데요. BYTE *는 PByte를 쓰시면 됩니다. m_RecFile.Write((@(frame_rate1))^,4); ...
    • 헤메는별
      2010.03.18 01:51
      정말 감사드립니다...^^;;
    • 땅콩맨
      2010.03.18 06:54
      오래간만에 C언어 소스를 보니깐 감회가 남다르네요... C <-> Delphi 포팅! 재미있겠어요... 헤매...
    • 헤메는별
      2010.03.18 22:32
      예... 지금 네트웍 카메라 관련된... ㄷㄷㄷㄷㄷㄷㄷㄷ ^^;;
    • 땅콩맨
      2010.03.19 18:49
      와.. 네트웍 카메라라... 좀 자세히 알려주세욤... ^^ 회사기밀인가요? ㅋㅋㅋㅋ
    • 헤메는별
      2010.03.19 19:55
      기밀은요.. 무슨.. ^^ 자동차 검사와 관련된 솔루션을 만들고 있는 회사구요... 검사시에 카메라로 사진...
    • 땅콩맨
      2010.03.20 07:57
      아. 그렇구나... 자동차검사라... 멋있으시네요!!! ^^
    • 땅콩맨
      2010.03.16 09:46
      http://bluexmas.tistory.com/20 [SOAP강좌] Java 서버 - Delphi 클라이언트 참고하세요!
    • 유옥난
      2010.03.23 03:18
      너무초보라 보고도 잘 몰겠어요 ㅡㅡㅋ 보내주신 소스를 책보고 연구해야 할라나봐요! 답변 너무 너무 ...
    • 땅콩맨
      2010.03.23 07:45
      쑥스럽게 ㄳ는요? ㅎㅎ 암튼 꼭 성공하시길 바랄께요. 성공하시면 또 알려주세요~
    • 유옥난
      2010.04.15 21:01
      성공했어요~ ^^ 닷넷쪽 서버에서 수정해야 하네요~ ㅋ 뭔지 잘 몰르지만 서버쪽에서 도큐먼트 방식으로...
    • 땅콩맨
      2010.04.16 10:04
      해결하셨다니 다행이네요. ^^
    • 조희정
    • 2010.03.13 03:37
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 땅콩맨
      2010.03.13 10:12
      if ping_test < timeout query end if 하나마나한 답변이겠지만 몇자 끄저역 봅니다...
    • KDDG_Hit
      2010.03.15 20:37
      보통 서버 프로그램이 종료될 경우는 연결되어 있는 클라이언트 소켓을 끊지 않나요?? 이때 클라이언트에...
    • 땅콩맨
      2010.03.17 09:23
      아 그렇게 하면 되겠네요...
    • 낭낭
    • 2010.03.13 03:12
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 땅콩맨
      2010.03.14 10:06
      제 생각에는 if length(Adata) < 1310 then exit; 이 부분이 의심이 가네요. 1310이 1310 byte를 의...
    • phono
      2010.03.19 02:01
      AData 타입이 TByte 네요.. 이러면 AData 타입이 일반 byte 형태는 아닐듯 하군요. AData.xxxx ...
    • 최용일
      2010.03.12 21:08
      그런 방법은 불가능합니다. 델파이의 폼객체와 C++의 윈도우객체가 근본적으로 다르기 때문이죠. MS Win...
    • KDDG_Hit
      2010.03.12 21:26
      답변 감사합니다.. 몇일동안 이것저것 다 찾아봤었는데. ㅠ.ㅠ 음.. 그러면 역시 Windows API 를 이용해...
    • KDDG_Hit
      2010.03.12 22:28
      SetWindowLong, SetWindowPos 함수로 해결했습니다~~
    • 땅콩맨
      2010.03.14 10:16
      오~ 이방법 알아두면 나중에 유용할때가 있겠는걸요? ^^
    • 송창열
    • 2010.03.12 20:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 땅콩맨
      2010.03.17 09:32
      저같은 경우는 시작프로그램에 프로그램이 등록되어있다면 이를 최소화하고 또 리소스를 많이잡아먹는 ...
    • mook
    • 2010.03.11 02:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 땅콩맨
      2010.03.12 09:47
      mook님의 문제를 함께 해결해보고 싶었는데 뭣미... 퀀텀그리드가 안깔려있다는... ^^;;