indy 10 5 7的資料傳送接收的用法

2021-09-06 03:59:16 字數 3156 閱讀 3155

tmydata 

=record

id:integer;

name:array[0..

20]

ofchar;

***:array[0..

10]

ofchar;

age:byte;

address:array[0..

256]

ofchar;

updatetime:double;

end;

//傳送結構體:

procedure

tform2.button2click(sender: tobject);

varsenddata:tmydata;

begin

senddata.id:=10

;strpcopy(senddata.name,

'wyatt');

strpcopy(senddata.***,'男

');senddata.age:=25

;strpcopy(senddata.address,

'江蘇省');

senddata.updatetime:

=now;

idtcpclient1.iohandler.write(#

99);

//接收時便於區分接收的資料型別 自定義

idtcpclient1.iohandler.write(rawtobytes(senddata,sizeof(senddata)));

end;

//傳送tstrings型別

procedure

tform2.button3click(sender: tobject);

varslist:tstrings;

i:integer;

begin

slist :

=tstringlist.create;

fori :=0

to30

dobegin

slist.add(

'資料index'+

inttostr(i));

end;

idtcpclient1.iohandler.write(#

111);

//接收時便於區分接收的資料型別 自定義

idtcpclient1.iohandler.write(slist.count);

idtcpclient1.iohandler.write(tobytes(slist.text,tidtextencoding.utf8));

end;

//傳送一行字串資料

procedure

tform2.button4click(sender: tobject);

begin

idtcpclient1.iohandler.write(#

12);

//接收時便於區分接收的資料型別 自定義

idtcpclient1.iohandler.write('文星

',tidtextencoding.utf8);

//中文要指定編碼,接收時也要進行相應的轉換,否則中文會顯示成?號

end;

接收:procedure

tform1.idtcpserver1execute(acontext: tidcontext);

varreaddata:tmydata;

buf:tidbytes;

scmd:char;

slist:tstrings;

i:integer;

listcount:integer;

begin

scmd :

=acontext.connection.iohandler.readchar;

ifscmd =#

99then

//接收結構體

begin

acontext.connection.iohandler.readbytes(buf,sizeof(readdata));

bytestoraw(buf, readdata, sizeof(readdata));

with

memo1.lines

dobegin

add(

'id:'+

inttostr(readdata.id));

add(

'name:'+

strpas(readdata.name));

add(

'***:'+

readdata.***);

add(

'age:'+

inttostr(readdata.age));

add(

'updatetime:'+

datetimetostr(readdata.updatetime));

end;

endelse

ifscmd =#

111then

//接收 tstrings

begin

listcount :

=acontext.connection.iohandler.readlongint;

slist :

=tstringlist.create;

tryacontext.connection.iohandler.readstrings(slist,listcount,tidtextencoding.utf8);

fori :=0

toslist.count-1

dobegin

memo1.lines.add(slist.strings[i]);

end;

finally

slist.free;

end;

endelse

ifscmd =#

12then

begin

memo1.lines.add(acontext.connection.iohandler.readstring(acontext.connection.iohandler.inputbuffer.size,tidtextencoding.utf8)

endelse

acontext.connection.iohandler.inputbuffer.clear;

//清除不能識別的命令

);end

;

indy 10 5 7的資料傳送接收的用法

傳送結構體 tmydata record id integer name array 0.20 of char array 0.10 of char age byte address array 0.256 of char updatetime double end 傳送結構體 procedure ...

INDY流的傳送和接收

傳送 trys hello world stream tstringstream.create s idtcpclient1.openwritebuffer idtcpclient1.writeinteger stream.size 注意這裡 要先寫入流的長度,在讀取的時候如果使用 athread....

socket資料的接收和傳送

linux 不區分套接字檔案和普通檔案,使用 write 可以向套接字中寫入資料,使用 read 可以從套接字中讀取資料。前面我們說過,兩台計算機之間的通訊相當於兩個套接字之間的通訊,在伺服器端用 write 向套接字寫入資料,客戶端就能收到,然後再使用 read 從套接字中讀取出來,就完成了一次通...