
30.10.2009, 15:01
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
С нами:
9162683
Репутация:
175
|
|
Код:
function SendText(Sock: TSocket; S: String): Integer;
var
MainBuff: Array[0..1023] of Char;
iSize: Integer;
begin
Result:=0;
While (Length(S)>0) do
begin
iSize:=Length(S);
if (iSize>SizeOf(MainBuff)) then iSize:=SizeOf(MainBuff);
FillChar(MainBuff, SizeOf(MainBuff), 0);
CopyMemory(@MainBuff, PChar(S), iSize);
Delete(S, 1, iSize);
Result:=Result+Send(Sock, MainBuff, iSize, 0);
end;
end;
Код:
function ReceiveText(Sock: TSocket; var S: String): Integer;
var
MainBuff: Array[0..1023] of Char;
iSize: Integer;
begin
Result:=0;
While True do
begin
FillChar(MainBuff, SizeOf(MainBuff), 0);
iSize:=Recv(Sock, MainBuff, SizeOf(MainBuff), 0);
if (iSize<1) then Break;
S:=S+String(MainBuff);
Result:=Result+iSize;
end;
end;
Оба твои коды правильные. Они не слишком хороши в реализации. Также, долго могут выполняться следующие процедуры: FillChar(); CopyMemory();
|
|
|