TServerSocket組件如何接收二進位資料? |
答題得分者是:hagar
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
參考這篇看看:
http://www.swissdelphicenter.ch/en/showcode.php?id=1072
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var iLen: Integer; Bfr: Pointer; begin iLen := Socket.ReceiveLength; GetMem(Bfr, iLen); try Socket.ReceiveBuf(Bfr^, iLen); FStream.Write(Bfr^, iLen); finally FreeMem(Bfr); end; end;-- hagar. |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
引言: 參考這篇看看: http://www.swissdelphicenter.ch/en/showcode.php?id=1072上面的代碼是把接收到的二進位檔資料以TFileStream保存到硬碟,而我接收的二進位資料並不是檔,而是32個位元組長度的資料,我希望把這些資料以16進制的形式在介面上顯示出來,請教怎麼做呢?procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var iLen: Integer; Bfr: Pointer; begin iLen := Socket.ReceiveLength; GetMem(Bfr, iLen); try Socket.ReceiveBuf(Bfr^, iLen); FStream.Write(Bfr^, iLen); finally FreeMem(Bfr); end; end;-- hagar.
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
試試看這樣子行不行:
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var iLen: Integer; Bfr: Pointer; s, sTmp: string; i: integer; begin iLen := Socket.ReceiveLength; GetMem(Bfr, iLen); try Socket.ReceiveBuf(Bfr^, iLen); s := StrPas(Bfr); finally FreeMem(Bfr); end; sTmp := ''; for i := 1 to Length(s) do sTmp := sTmp Format('%X', [Ord(s[i])]) ' '; Memo1.Lines.Add(sTmp); end;-- hagar. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |