권익수님 답변 감사드립니다.
알려주신 방법으로 테스트 해봤는데 저는 결과가 동일하게 0x7F3F로 전송이 되네요 ㅜㅜ
알려주신 Byte, Ansi encoding 방법 모두 같은 결과 값이구요...
다른 방법이 없을까요?
권익수 님이 쓰신 글 :
: 아마도 Delphi 2009 이후의 Indy 10에서 유니코드 처리때문에 발생하는 문제인 것 같네요.
: Ansi로 인코딩해서 보내거나 TIdBytes에 일일이 Byte 값을 대입해서 처리하면 해결될겁니다.
:
: var
: s: string;
: l_Data: TIdBytes;
: l_Encoding: TEncoding;
: begin
: IdTCPClient1.Connect;
: try
: // Byte
: l_Data := nil;
: AppendByte(l_Data, Ord(#$7F));
: AppendByte(l_Data, Ord(#$80));
: IdTCPClient1.IOHandler.Write(l_Data);
:
: // ANSI Encoding
: l_Data := nil;
: s := #$7F#$80;
: l_Encoding := TEncoding.ANSI;
: AppendString(l_Data, s, -1, l_Encoding);
: IdTCPClient1.IOHandler.Write(l_Data);
: finally
: IdTCPClient1.Disconnect;
: end;
:
:
: 소르 님이 쓰신 글 :
: : 안녕하세요.~
: : indy10의 tcpserver, tcpclient 소켓 통신에서 데이터가 이상하네요;;
: : delphi xe3 + indy 10이고 테스트 소스는 아래와 같습니다.~
: :
: : var
: : asTmp: AnsiString;
: : begin
: : ~중략 (tcpclient 연결 등)
: : asTmp := #$7F + #$80;
: : IdTCPClient1.Socket.Write( asTmp );
: :
: :
: : 뭐 특별할것도 없는 저 소스인데 전송 시 패킷은 0x7F3F 로 날라갑니다 ㅜㅜ
: :
: : 아무래도 0x80 이상 값이 모두 3F로 전송되는것이 signed / unsigned 문제인것 같기도 하고;;
: :
: : indy9에서는 이상이 없는데 10에서는 안되네요;;
: :
: : 혹시 해결방법 아시는분 답글 부탁드려요.~
: :
: : 아~ iohandler.write도 동일하게 0x7F3F로 날라갑니다.
|