Q&A

  • 소켓통신에서 바이트단위 데이터 송수신은 어떻게?
제목대로입니다.



간단하게 서버에서 데이터를 주기적으로 받아오는 프로그램을 만드는데요.



받을 데이터가 문자열형식이 아니네요.



그래서 바이너리 형식으로 가져와서 저장하고 싶은데요.



방법이 있습니까?



델파이에서 기본으로 제공하는 TClientWinSocket 의 ReceiveText 를 사용하면



데이터를 스트링으로 받아오니까 중간에 데이터가 끊기는 것 같습니다.



해결방법 좀 알려주세요.

1  COMMENTS
  • Profile
    김봉학 1999.11.29 19:47
    강윤환 wrote:

    > 제목대로입니다.

    >

    > 간단하게 서버에서 데이터를 주기적으로 받아오는 프로그램을 만드는데요.

    >

    > 받을 데이터가 문자열형식이 아니네요.

    >

    > 그래서 바이너리 형식으로 가져와서 저장하고 싶은데요.

    >

    > 방법이 있습니까?

    >

    > 델파이에서 기본으로 제공하는 TClientWinSocket 의 ReceiveText 를 사용하면

    >

    > 데이터를 스트링으로 받아오니까 중간에 데이터가 끊기는 것 같습니다.

    >

    > 해결방법 좀 알려주세요.



    음~~ 우선은 ReceiveText 함수의 문제는 아닌것 같습니다..

    왜냐하면 지도 예전에 Http Server 프로그램을 했을때 위의 함수로

    작성 한 경우에도 바이너리로 보내는 이미지 파일의 경우 아무 문제도 없었거든요.



    제 생각에는 바이너리 데이타 송수신시 아마도 한번에 보낼수 있는 패킷양보다

    많은 데이타가 보내져 한 패킷에 처리가 끝나지 않은 경우가 아닌가 생각되는군요..



    소켓 이벤트중 OnRead 나 OnWrite에서 데이타 송수신 부분의 구현이 완벽한지

    먼저 살펴 보시는것이 좋겠습니다.



    그리고 Blocking Mode 에서는 TSocketStream 을 사용 하는걸로 알고 있는데

    지도 Blocking Mode는 별로 안써봐서 답변 할 수가 없군요...



    제가 잘못알고 있을지도 모르지만 일단 데이타 누수에 관해 먼저

    게시판을 참고해 보세요...



    그럼...안녕히...