Synapse UDP connection lazarus / 38-Networking and Web Programming ---------------------------------------------------------------------- Jake012345 · 2020-06-11 11:52 Hello! I want to write a program that can 'synchronize' some data. Here I tried to synchronize two TextEdit.Text but it not works. (That's my first try with UDP) Anybody knows what's the problem? Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i unit Unit1; {$mode objfpc}{$H+} interface uses  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,  laz_synapse, blcksock; type   { TForm1 }   TForm1 = class(TForm)    ConnectButton: TButton;    HostButton: TButton;    IPEdit: TEdit;    PortEdit: TEdit;    TextEdit: TEdit;    Log: TMemo;    procedure ConnectButtonClick(Sender: TObject);    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);    procedure HostButtonClick(Sender: TObject);  private   public  end; type  TCustomThread = class(TThread)    Listener: TUDPBlockSocket;    Connection: TUDPBlockSocket;    Connected: boolean;    Received: string;    ForSend: string;  protected    procedure Execute; override;  public    constructor Create(CreateSuspended: boolean);    procedure DataIn;  end; var  Form1: TForm1; implementation {$R *.lfm} { TForm1 } var  SynCronThread: TCustomThread;  mode: string; constructor TCustomThread.Create(CreateSuspended: boolean);begin  inherited  Create(CreateSuspended);  FreeOnTerminate := True;end; procedure TCustomThread.DataIn;begin  Form1.Log.Append(Received);end; procedure TCustomThread.Execute;begin  if mode = 'Server' then  begin    Listener := TUDPBlockSocket.Create;    Listener.CreateSocket;    Listener.Bind(Form1.IPEdit.Text, Form1.PortEdit.Text);    repeat      Received := Listener.RecvString(10);      if Received <> '' then        ShowMessage(Received);      Synchronize(@DataIn);    until Terminated;    if Terminated then    begin      Listener.CloseSocket;      Listener.Free;    end;  end;   if mode = 'Client' then  begin    repeat      Connection := TUDPBlockSocket.Create;      Connection.CreateSocket;      Connection.Connect(Form1.IPEdit.Text, Form1.PortEdit.Text);      ForSend := Form1.TextEdit.Text;      Connection.SendString(ForSend);      Connection.CloseSocket;      Connection.Free;    until Terminated;   end;end; procedure TForm1.HostButtonClick(Sender: TObject);begin  SynCronThread := TCustomThread.Create(True);  mode := 'Server';  SynCronThread.Start;end; procedure TForm1.ConnectButtonClick(Sender: TObject);begin  SynCronThread := TCustomThread.Create(True);  mode := 'Client';  SynCronThread.Start;end; procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);begin  SynCronThread.Terminate;end; end. ---------------------------------------------------------------------- rvk · 2020-06-11 11:57 Didn't you learn in the other topic that recvstring waits until CRLF is received? So also add that to your SendString(). ---------------------------------------------------------------------- Jake012345 · 2020-06-11 12:07 That's working... Sure..... Whyyyyy???????!!