вопрос удп в лаунчере - PullRequest
0 голосов
/ 26 июня 2018

Можно ли проверить, нет ли у нас соединения с сервером? Я написал этот код. Я знаю, что UDP не имеет этой функции, но я хочу сделать это в UDP.

procedure TForm1.Button4Click(Sender: TObject);
var
  Reg : TRegistry;
  odebrany,lgraczy,mgraczy,hostname:string;
begin
  Application.Title:=Caption;
  UDPClient.ReceiveTimeout := 2000;
  UDPClient.Host:=IdIPWatch1.LocalIP;
  UDPClient := TIdUDPClient.Create(Self);
  UDPClient.Active := True;
  StrList.Lines.Text:= ip;
  StrList.Lines.Text:=StringReplace(StrList.Lines.Text, '.', #13, [rfReplaceAll]);
  Buffer := 'SAMP' + Chr(StrToIntDef(StrList.Lines[0], 100)) + Chr(StrToIntDef(StrList.Lines[1], 100)) + Chr(StrToIntDef(StrList.Lines[2], 100)) + Chr(StrToIntDef(StrList.Lines[3], 100));
  //Port >> 8 + i
  Buffer := Buffer + Chr(port and 255) + Chr((port shr 8) and 255)+ 'i';
  UDPClient.Send(ip,port,Buffer);
  odebrany:=UDPClient.ReceiveString();
  /**/When odebrany take string program crash here!-**---------------------------------------
  if ( Trim(odebrany) = '' ) then
  begin
    ShowMessage(error);
    ShellExecute(Handle, 'open', 'cmd.exe', '/c taskkill /F /IM launcher.exe /T' , nil, SW_HIDE);
  end;
end;

Я пытался это, но это не сработает

if ( Trim(odebrany) = '' ) then
begin
  ShowMessage(error);

потому что программа останавливается рано.

...