Hallo Community!
Ich habe (wiedermal) ein Problem:
Ich habe eine TUdpSockUtil-Komponente, diese hat einen LocalPort, einen RemoteHost und einen RemotePort.
Diese dient sowohl dazu, dass verschiedene andere Programme dem Programm eine Msg schicken können,
als auch zum Versand von Msg an diese anderen Programme.
Dabei läuft er eine Liste mit IPs und Ports durch, setzt RemoteHost und RemotePort und ruft SendBuf auf,
ich geb euch mal ein Pseudo-Bsp ^^
Delphi-Quellcode:
for i := 0 to ReceiverList.count - 1 do
begin
UdpSockUtil1.remotehost := ReceiverList[i].ip;
UdpSockUtil1.remoteport := ReceiverList[i].port;
// if not UdpSockUtil1.Listen then
// begin
// UdpSockUtil1.close;
// UdpSockUtil1.open;
// end;
// if UdpSockUtil1.Listen then
UdpSockUtil1.SendBuf(xBuf[0],length(xbuf));
end;
(der auskommentierte Code war testweise einkommentiert ohne etwas zu bringen)
Mein Problem dabei ist folgendes:
Wenn eins der Programme, denen ich eine Msg schicken will, nicht läuft,
erhalte ich einen Error 10054, was mich ja auch nicht sonderlich verwundert.
Was mich dagegen wundert ist:
Wenn der Fehler ein paar mal gekommen ist, empfängt das Programm keine Msgs der anderen Programme mehr.
Also entweder müllt sich ein Buffer zu, den ich nicht freigeben kann oder .. ka, vlei macht Windows den Port dicht,
von dem ich sende, wenn ich ins Nirvana sende, ich weiß es nicht, auf jeden Fall ist es Mist,
weil wenn eins der Programme mal abkackt, ist das nicht weiter schlimm,
dann wird es von einem Überwachungsprogramm ggf abgeschossen und neugestartet,
aber dass ein anderes Programm, was noch läuft, keine Msgs mehr empfangen kann deswegen, ist ein kritischer Zustand!
Hat jmd eine Idee?