Zitat von
Schubi:
Senderseite:
Delphi-Quellcode:
WSocket.Addr := '10.1.1.255';
Versuch mal die 255.255.255.255, die ich dir schon gepostet hatte. So funktionierts hier zumindestens.
Zitat von
Schubi:
Aber die Daten kommen in Etappen wenn mich nicht alles täuscht?!
Wie bastle ich die zusammen?
Es gibt diverse Beispiele, wo das schon drin steht. Ich suchs mal eben:
Delphi-Quellcode:
var RcvBuf: array [0..1023] of char;
RcvLen: integer;
procedure TForm1.wsServerDataAvailable(Sender: TObject; Error: Word);
var Len,i: Integer;
Source: TSockAddrIn;
begin
{ Receive the data that has arrived, put it after the data already here }
Len := sizeof(Source);
Len := wsServer.ReceiveFrom(@RcvBuf[RcvLen],SizeOf(RcvBuf)-RcvLen-1,Source,Len);
if Len <= 0 then Exit;
RcvLen := RcvLen + Len;
RcvBuf[RcvLen] := #0;
while TRUE do begin
i := StrScan(@RcvBuf, #10) - RcvBuf;
if i < 0 then break;
RcvBuf[i] := #0;
//Communication(StrPas(RcvBuf),StrPas(inet_ntoa(Source.sin_addr)));
RcvBuf[i] := #10;
if i >= (RcvLen-1) then begin
RcvLen := 0;
break;
end;
{ Not the last line, move the next one in front of buffer }
Move(RcvBuf[i+1],RcvBuf,RcvLen-I);
RcvLen := RcvLen-i-1;
end;
end;
Frei modifiziert nach dem Ereignis das im Beispiel UDPLSTN definiert ist, was ich auch schon geschrieben hatte.