패킷 단위로 끊어져 오기 때문에 한번에 내가 받아야 할 데이타가 모두 온다고 생각하지 마시고,
수신부는 계속 받고, 받은 것은 차곡차곡 뭉쳐서 의미있는 데이타가 완성되었을 때 사용합니다.
yjh 님이 쓰신 글 :
: 안녕하세요
:
:
: 현재 plc와 TCP socket 통신 중 수신한 데이터가 0x46 0x49 0x4E 0x53 0x00 0x30 ... 이라는 데이터가 수신 되어야 하는데
:
: 이걸 ReceiveText 함수로 AnsiString 타입으로 받다보니 0x30 이라는 데이터가
:
: null 때문에 짤려서 수신이 안되는 것 같습니다.
:
:
: 그래서 ReceiveBuf 함수를 사용해보려고 하는데 리턴값이 int형이더군요.
:
: 0x00 이후 데이터까지 모두 수신하고 싶은데
:
: ReceiveBuf 함수 사용법 좀 자세히 알려주실분 있으실까요??..
:
:
: int RcvLength = Socket->ReceiveLength();
: char *RcvData = new char[RcvLength+1];
:
: Socket->ReceiveBuf(RcvData, RcvLength);
:
:
:
:
: 현재 위처럼 코드를 작성한 뒤
: ReceiveLength 함수를 사용했을때 받아와지는 Length는 24개인데
: RcvData에 실제로 나오는 값은
:
: RcvData[0] = 0x46
: RcvData[1] = 0x49
: RcvData[2] = 0x4E
: RcvData[3] = 0X53
: RcvData[4] = 0x00
:
: 5개입니다.
:
: null 이후의 수신값 어떻게하면 받을 수 있을까요?...
:
: 부탁드립니다 ㅠㅠ
:
:
|