EDIT: Frage nach der Antwort gepostet.
Hallo!
Immernoch die "nicht erreichbar" Problematik.
Mein aktueller Code um die Verbindung aufzubauen:
Delphi-Quellcode:
form4.udp1.RemoteHost:= '5.45.97.44';
form4.udp1.RemotePort:= '2301';
form4.udp1.Open;
if form4.udp1.Connected then
begin
form4.Udp1.SendBuf(request, SizeOf(TInfoRequest));
form4.Udp1.ReceiveBuf(buffer, SizeOf(buffer));
form4.udp1.WaitForData(1000);
if Length(buffer)<1 then
begin
form4.udp1.Close;
exit;
end;
Wenn der Port korrekt ist, wird 1 Sekunde gewartet und dann der "buffer" gelesen.
Ist der Port aber kein QueryPort:
Delphi-Quellcode:
form4.udp1.RemoteHost:= '5.45.97.44';
form4.udp1.RemotePort:= '1111'; // Port geändert
form4.udp1.Open;
if form4.udp1.Connected then
begin
form4.Udp1.SendBuf(request, SizeOf(TInfoRequest));
form4.Udp1.ReceiveBuf(buffer, SizeOf(buffer));
form4.udp1.WaitForData(1000);
if Length(buffer)<1 then
begin
form4.udp1.Close;
exit;
end;
Das Programm hängt sich auf.
Ich hab schon nachgelesen und scheinbar hängt es sich nicht wirklich auf, sondern lauscht weiterhin und wartet auf Antwort.
Ich bin auf diese Option gestoßen:
form4.udp1.BlockMode := bmNonBlocking
Damit soll das angeblich funktionieren, jedoch bekomme ich dann immer die Meldung vom "OnError"-Event, dass keine Verbindung aufgebaut werden konnte.
Delphi-Quellcode:
procedure TForm4.udp1Error(Sender: TObject; SocketError: Integer);
begin
showmessage('
Could not connect. The server you are trying to query might be down');
udp1.Active:= false;
end;
Irgendwelche Ideen?