Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Testen ob Net Send Nachrichten angekommen sind (https://www.delphipraxis.net/55068-testen-ob-net-send-nachrichten-angekommen-sind.html)

MasterDG 16. Okt 2005 10:24


Testen ob Net Send Nachrichten angekommen sind
 
Hallo DPler!

Ich habe ein Programm geschrieben welches NetSend-Nachrichten verschickt. Dazu habe ich diesen Code benutzt. Das verschicken macht keine Probleme. Allerdings bekommt man ja keine Rückmeldung ob die Nachricht wirklich angekommen ist.
Das stört mich halt noch ein bischen und ich würde das gerne ändern.

Beim "normalen" verschicken über "net send user nachricht" bekommt man ja auch gesagt ob die Nachricht angekommen ist oder nicht. Wie kann ich das hier testen?

Am Ende des Codes wird ja mit GetLastError getestet ob irgendein Fehler aufgetreten ist. Jedoch sagt das nichts aus darüber ob die Nachricht auch wirklich angekommen ist oder nicht. Ich hatte mir überlegt ob man vielleicht irgendwo anders im Code eingreifen und testen könnte, z.B. wenn irgendeine Aktion nicht durchgeführt werden kann oder so. Ich hab aber leider keine Ahnung wo ich da ansetzten könnte :( .

Vielleicht weiß da jemand bescheid und kann mir helfen. :???:

Ein anderer Ansatz wäre, denke ich, über NETAPI32.dll zu testen ob der Ziel-PC im Nachrichtenalias bekannt ist oder nicht.

Welche Möglichkeit sollte ich nehmen? Und wie soll ich das angehen?

Vielen Dank im Vorraus!

Gruß
MasterDG

SirThornberry 16. Okt 2005 10:34

Re: Testen ob Net Send Nachrichten angekommen sind
 
die funktion gibt doch einen Boolean zurück? Wenn die Nachricht also nicht zugestellt werden konnte und die Funktion richtig programmiert wurde solltest du False zurück bekommen wenn etwas beim versand schief gegangen ist.

MasterDG 16. Okt 2005 13:16

Re: Testen ob Net Send Nachrichten angekommen sind
 
Hallo!

Dieser Rückgabewert wird ja durch GetLastError bestimmt. Aber ich habe das mal getestet und jedes mal, egal ob die Nachricht ankommt oder nicht gibt dieser den gleichen Wert zurück. Also denke ich da wird nur getestet ob was lokal schiefgegangen ist und nicht ob der Name im Netzwerk vorhanden ist. Ich will ja wissen ob der Name im Netzwerk vorhanden ist und der Nachrichtendienst gestartet ist. Also ob eine problemlose Übertragung möglich ist.

Wie könnte ich das machen?

Gruß
MasterDG

SirThornberry 16. Okt 2005 18:26

Re: Testen ob Net Send Nachrichten angekommen sind
 
ich habs mir grad mal angesehen. Erst wird result auf False gesetzt und wenn dann das öffnen des Service fehlschlägt wird das result nie auf True gesetzt, sollte also funktionieren.

MasterDG 16. Okt 2005 21:53

Re: Testen ob Net Send Nachrichten angekommen sind
 
Hallo SirThornberry!

Danke für deine Antworten! Ich hab am Anfang auch gedacht dass das funktioniert. Aber ich hab es mal getestet und gemerkt, dass egal ob der Nachrichtendienst gestartet ist, ein richtiger oder falscher Ziel-PC-Name eingegeben wurde immer der Wert "true" zurückgeliefert wird!

Ich denke dass mit dem testen ob GetLastError=ERROR_IO_PENDING nur getestet werden sollte ob etwas bei dem WriteFile(..) schiefgegangen ist oder nicht. Anscheinend wird dabei aber nicht erkannt ob dieser nicht gestartet ist oder ein falscher Name für den Ziel-PC eingeben wurde.

Oder hab ich da was falsch verstanden?

Mir ist leider nicht ganz klar was dieser Quellcode im System macht das die NetSend-Nachrichten verschickt werden. Ich hoffe das kann mir einer Mal kurz erklären. :oops:

Gruß
MasterDG

ripper8472 16. Okt 2005 22:11

Re: Testen ob Net Send Nachrichten angekommen sind
 
wenn die netsends auf udp basieren, kannst du das vergessen... das wuerd ich an deiner stelle erstmal rausfinden

MasterDG 16. Okt 2005 22:25

Re: Testen ob Net Send Nachrichten angekommen sind
 
Hallo!

Also ich weiß es nicht 100%tig aber Net Send müsste auf UDP basieren.

Es geht mir auch nicht darum zu erkennen ob ein Paket verloren gegangen ist sondern wie in der Eingabeaufforderung wenigstens eine Rückgabe zu bekommen falls der flasche Name der PC eingegeben wurde oder der Nachrichtendienst deaktiviert. Irgendwie wird das ja in der Eingabeaufforderung auch getestet...

Daher habe ich mir wie im 1. Thread erwähnt als Alternative nochüberlegt die NETAPI32.dll zubenutzen falls es dort eine Funktion zum Reinen testen gibt.

Gruß
MasterDG

Luckie 16. Okt 2005 22:28

Re: Testen ob Net Send Nachrichten angekommen sind
 
Hast du mal mein NetSend ausprobiert?
http://www.luckie-online.de/Developer/Delphi/Programme/

Basilikum 16. Okt 2005 23:06

Re: Testen ob Net Send Nachrichten angekommen sind
 
die API NetMessageBufferSend liefert den selben Fehler zurück, wie das "net send"-Kommando (logisch eigentlich, da dort ja auch die API verwendet wird... :-) )

Delphi-Quellcode:
Function NetMessageBufferSend(ServerName, MsgName, FromName : PWideChar;Buf : Pointer;BufLen : Integer) : Integer; StdCall; External 'NETAPI32.DLL';

NicoDE 17. Okt 2005 10:28

Re: Testen ob Net Send Nachrichten angekommen sind
 
Zitat:

Zitat von MasterDG
Also ich weiß es nicht 100%tig aber Net Send müsste auf UDP basieren.

'net send' verwendet die NetBIOS Datagram Services.

Delphi-Programm mit Quellcode, welches unter 9x und NT funktioniert:
http://www.bendlins.de/nico/delphi/NetSend.zip

Gruß Nico


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz