*Thread ausbuddel*
Ist zwar bestimmt schon zu spät, aber naja
Ich beschäftige mich gerade selber mit den ICS.
im OnDataAvailable liest du am besten so:
Delphi-Quellcode:
procedure TFormMain.WSocketUDPServerDataAvailable(Sender: TObject;
ErrCode: Word);
var Buffer: array [0..1023] of char;
Len: Integer;
Src: TSockAddrIn;
SrcLen: Integer;
Data: string;
begin
SrcLen := SizeOf(Src);
Len := WSocketUDPServer.ReceiveFrom(@Buffer, SizeOf(Buffer), Src, SrcLen);
if Len >= 0 then begin
Buffer[Len] := #0;
Data := StrPas(Buffer);
// mache was mit Data
end;
end;
So funktionierst zumindest bei mir (den Buffer kannst du ja anpassen).
Eine Alternative wäre, am Server auf LineMode := true zu schalten.
Dann kommt pro OnDataAvailable-Event genau eine Zeile an - sprich, solange
du kein #13#10 sendest, wird kein OnDataAvailable ausgelöst.
Dann müsste auch ReceiverStr funktionieren (glaub ich zumindest).
Wichtig ist, dass du auch einen Linien-Begrenzer mitschickst
(Server-Eigenschaft LineEnd, default #13#10) - dazu einfach SendStr(Edit1.Text+#13#10); verwenden.