delphi TServerSocket的使用方法

2021-09-24 16:11:05 字數 2094 閱讀 2521

定義乙個全域性liststring用於接收socket的內容

var

resv:tstringlist;

開啟應用程式時建立resv,在formcreate中進行建立

resv := tstringlist.create;

procedure tmainframe.serversocketclientconnect(sender: tobject;

socket: tcustomwinsocket);

begin

resv.clear;//清空儲存的內容

end;

procedure tmainframe.serversocketclienterror(sender: tobject;

socket: tcustomwinsocket; errorevent: terrorevent; var errorcode: integer);

begin

case errorcode of

10053:socket.close;

end;

errorcode := 0;

end;

procedure tmainframe.serversocketclientread(sender: tobject;

socket: tcustomwinsocket);

var

ilength,i :integer;

sdata,key,path,send : string;

ansidata,ansiout : ansistring;

msg,result : isuperobject;

begin

ilength := socket.receivelength;

if ilength > 0 then

begin

resv.add(socket.receivetext);

i := resv.count;

if tagcount(ansistring(resv.strings[i-1]),'*') > 0 then

begin

sdata := resv.text;

if (sdata.startswith('#') and (sdata.contains('*'))) then

begin

trysdata := stringreplace(sdata.trim,chr(13)+chr(10),'',[rfreplaceall]); //刪除回車

ansidata := copy(sdata,2,sdata.length - 2); //刪除接收內容中的#號和*號 (#和*用來對內容進行封包的所以要去除)

resv.clear;

base64decode(ansidata,ansiout); //接收內容進行base64解碼

sdata := ansiout;

msg := so(sdata); //轉碼後的內容轉換成json物件

result := so;

if (msg['flag'].asinteger = 1) then

begin

result.s['msg'] := '接收成功';

result.b['state'] := true;

socket.sendtext(result.asstring+#13#10);

endexcept

end;

end;

end;

end;

end;

function tmainframe.tagcount(source: ansistring; tag: ansichar): integer;

var i, tcount: integer;

begin

tcount := 0;

for i := 1 to length(source) do

if source[i] = tag then inc(tcount);

result := tcount;

end;

iOS MBProgressHUD的使用方法

mbprogresshud就是乙個非常好用的第三方庫,可以快速接入載入的介面,下面貼 下面的 包含了各種常用型別的載入 import viewcontroller.h import mbprogresshud.h inte ce viewcontroller property atomic,assi...

dbms output put line使用方法

begin dbms output.put line a end 如果你是再sql plus中,只要再環境中打出 set serveroutput on 就可以了.還有一種方法 就是使用環境中的繫結變數也可以.再環境中定義 variable name varchar2 50 然後把過程新增乙個out...

sp addlinkedserver使用方法

exec sp droplinkedsrvlogin dbvip,null exec sp dropserver dbvip exec sp addlinkedserver server dbvip 被訪問的伺服器別名 srvproduct provider sqloledb datasrc ser...