function SendBuffer(Buffer:Pchar;BufferLen: Integer;Socket:TCustomWinSocket):Boolean;
var
P: PChar;
iLen,iSent: Integer;
begin
Assert(Buffer<>Nil);
Assert(Socket<>Nil);
Result := false;
if Not Socket.Connected then Exit;
P := Buffer;
iLen := BufferLen;
while iLen>0dobegin
iSent := Socket.SendBuf(p^,iLen);
if iSent <=0then Exit;
Inc(p,iSent);
Dec(iLen,iSent);
end;
Result := true;
end;
function RecvBuffer(Buffer:Pchar;BufferLen: Integer;Socket:TCustomWinSocket):Integer;
var
P: PChar;
iNeedRecv,iRecved: Integer;
begin
Assert(Buffer<>Nil);
Assert(Socket<>Nil);
Result :=0;
if Not Socket.Connected then Exit;
P := Buffer;
iNeedRecv := BufferLen;
while iNeedRecv>0dobegin
iRecved := Socket.ReceiveBuf(p^,iNeedRecv);
if iRecved <=0then Exit;
Inc(Result);
Inc(p,iRecved);
Dec(iNeedRecv,iRecved);
end;
end;
var a:array of byte; iLen: Integer;
iLen := 180; SetLength(a,iLen);
a[0]:=$01; a[1]:=$1E; ......
if Not SendBuffer(PChar(@iLen),sizeof(iLen),ClientSocket.socket) then Exit; //ClientSocket.socket.sendbuf(a,sizeof(a)); if Not SendBuffer(PChar(@a[0]),Length(a) * sizeof(a[0]),ClientSocket.socket) then Exit;
function SendBuffer(Buffer:Pchar;BufferLen: Integer;Socket:TCustomWinSocket):Boolean;
var
P: PChar;
iLen,iSent: Integer;
begin
Assert(Buffer<>Nil);
Assert(Socket<>Nil);
Result := false;
if Not Socket.Connected then Exit;
P := Buffer;
iLen := BufferLen;
while iLen>0dobegin
iSent := Socket.SendBuf(p^,iLen);
if iSent <=0then Exit;
Inc(p,iSent);
Dec(iLen,iSent);
end;
Result := true;
end;
已经测试了 if Not SendBuffer(PChar(@a[0]),sizeof(a[0]),ClientSocket1.socket) then Exit; sleep(2000); 两个包一个也没有发送!
if Not SendBuffer(PChar(@iLen),sizeof(iLen),ClientSocket.socket) then Exit; //ClientSocket.socket.sendbuf(a,sizeof(a)); if Not SendBuffer(PChar(@a[0]),Length(a) * sizeof(a[0]),ClientSocket.socket) then Exit; 红色部分怎么回事情,没有理解!
已经测试了 if Not SendBuffer(PChar(@a[0]),sizeof(a[0]),ClientSocket1.socket) then Exit; sleep(2000);
if Not SendBuffer(PChar(@b[0]),sizeof(b[0]),ClientSocket1.socket) then Exit; sleep(2000);
两个包一个也没有发送!
if Not SendBuffer(PChar(@iLen),sizeof(iLen),ClientSocket.socket) then Exit; //ClientSocket.socket.sendbuf(a,sizeof(a)); if Not SendBuffer(PChar(@a[0]),Length(a) * sizeof(a[0]),ClientSocket.socket) then Exit; 红色部分怎么回事情,没有理解!