Moin,
Ich will eine Konsolenanwendung schreiben, die sich mit einem anderen Computer im Netzwerk über UDP verbindet.
Ich benutze
Indy 9
Und hab jetz leider folgendes Problem festgestellt:
Hier erstmal mein
QC
Delphi-Quellcode:
type
vForm = class
UDPClient: TIdUDPClient;
UDPServer: TIDUDPServer;
constructor Create;
destructor Destroy;
private
procedure UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
end;
var
Form: vForm;
implementation
constructor vForm.Create;
begin
inherited Create;
UDPClient := TIdUDPClient.Create(nil);
UDPClient.Port := Port;
UDPClient.BroadcastEnabled := true;
UDPServer := TIdUDPServer.Create(nil);
UDPServer.DefaultPort := Port;
UDPServer.BroadcastEnabled := true;
UDPServer.OnUDPRead := UDPServerUDPRead;
UDPServer.Active := true;
end;
destructor vForm.Destroy;
begin
UDPServer.Active := false;
UDPClient.Free;
UDPServer.Free;
inherited Destroy;
end;
procedure vForm.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
begin
{...}
end;
Aufgerufen wird das ganze im mom einfach in der Programmroutine:
Delphi-Quellcode:
begin
// Variablen erstellen
Form := vForm.Create;
with Form do
try
UDPClient.Active := true;
UDPClient.Host := HostPC;
UDPClient.Broadcast('%Anwesenheit%' + ComputerName,Port);
UDPClient.Active := false;
write('Gesendet'+#10#13);
sleep(100);
except
write('Senden Fehlgeschlagen'+#10#13);
end;
// Variablen löschen
Form.Destroy;
end.
Wobei HostPC zu testzwecken einfach mein eigener Name ist.
Das Senden funktioniert dabei auch super, aber das mit dem Empfangen nicht.
Die oben aufgeführte OnUDPRead wird überhaupt nicht angesprochen.
Ich hab mir gedacht, dass des ganze damit zusammenhängt, dass ich in ner Konsolenanwendung keine Application hab, die die einzenen Prozeduren aufrufen kann.
Gibt es eine Möglichkeit, dass das Programm trotzdem die UDPRead-Prozedure aufruft ?
Danke schonmal für alle Antworten