Broadcast - serwer odbiera info + krzaczki

0

Witam
ściągnąłem źródło klienta i serwera do wysyłania Broadcastu na wspomniany serwer.
Używam komponentów idUDPServer i idUDPClient.

KLIENT:

 //procedura pobierająca adres IP
function GetIP:String;
var p:PHostEnt;
    s:array[0..128] of char;
    p2:pchar;
begin
 GetHostName(@s, 128);
 p := GetHostByName(@s);
 p2 := Pchar(iNet_ntoa(PInAddr(p^.h_addr_list^)^));
 Result:=String(p2);
 end;


 //procedura "pisząca adres" BROADCASTU
function Broadcasting:String;
 var s,s2:String;
 begin
  s:=GetIP;
  s2:='';
  s2:=s2+copy(s,1,Pos('.',s));
  delete(s,1,Pos('.',s));
  s2:=s2+copy(s,1,Pos('.',s));
  delete(s,1,Pos('.',s));
  s2:=s2+copy(s,1,Pos('.',s));
  delete(s,1,Pos('.',s));
  s2:=s2+'255';
  Result:=s2;
 end;

//wyslij tekst do wszystkich w sieci
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
udp.Host:=BroadCasting;          //pobierz Adres Broadcastu i zapisz do komponentu
udp.Broadcast(edit1.Text,1234)   //wyslij tekst z edita dopisując 'by BROADCAST :=)'
end;

SERWER:

procedure TForm1.udpUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);

  var
  buff:Array[0..4096] of Char;
begin
 AData.Read(buff,SizeOf(buff));     //odebrane dane przydziel do bufora
 Memo1.Lines.Add(String(buff));     //do memo1 zapisz dane z bufora
end;

W czym problem?
Gdy wysyłam wiadomość to odbieram ją wraż z kawałkiem ostatniej wiadomości lub z jakimiś krzaczkami i nie wiem jak tego się pozbyć, aby czysta wiadomość dochodziła, taka jaką wysyłam z Edit na kliencie.

Może coś z tym bufferem nie tak? Może go trzeba jakoś zwalniać/czyścić po odczycie?

Co tu jest źle? Dzięki za odpowiedzi. :)

0

SERWER:

procedure TForm1.udpUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);

  var
  buff:Array[0..4096] of Char;
begin
 ZeroMemory(@buff, SizeOf(buff));
 AData.Read(buff,SizeOf(buff));     //odebrane dane przydziel do bufora
 Memo1.Lines.Add(String(buff));     //do memo1 zapisz dane z bufora
end;
0

Dziękuję, o to chodziło. :) Dobrze węszyłem.

Teraz muszę zrobić sobie listę aktywnych IP, ale z tym chyba sobie już poradzę. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1