권익수님 덕분에 해결되었습니다.~
소스에 이상이 있었네요 ^^;;
Indy9에 너무 익숙한 나머지 ㅎㅎ;; 다시한번 감사드립니다.~
권익수 님이 쓰신 글 :
: 답변에 첨부한 코드는 제가 테스트해서 올린 코드입니다.
: 정상적으로 리턴 되는거 확인하고 올린건데...
: 다른 부분과 연관되어서 발생하는 문제일 수도 있으니 테스트하신 코드를 올려줘보세요.
:
: 소르 님이 쓰신 글 :
: : 권익수님 답변 감사드립니다.
: :
: : 알려주신 방법으로 테스트 해봤는데 저는 결과가 동일하게 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로 날라갑니다.