Internet-Verbindung trenne - wie gehts?

Für allgemeine Fragen zur Programmierung mit PureBasic.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Internet-Verbindung trenne - wie gehts?

Beitrag von GPI »

Hab bisher nicht gefunden. Ich will eine Internetverbindung (egal ob DSL-Modem oder normales Modem) trenne. Wie geht das am geschicktestens...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Also beim Normalmodem kann ich dir die RAS funktionen (siehe API-Guide) Empfehlen. Das funktioniert aber glaube ich nicht für DSL.

Also zuerst die Verbindung mit RasEnumConnections ermitteln und dann mit RasHangUp die verbindung schließen.

Bei DSL wirds in sofern schwer, da man manchmal über WLAN Manager(DT ... Manager) ins internet geht und ich nicht weiß, wie man dort überhaupt manuell die verbindung trennt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Bei DialUp-Modems (auch eigebauten DSL-Modems) müsste DarkDragons Methode funktionieren.

Bei Internetzugang über ein Netzwerk kommt man damit allerdings nicht weit. Ich vermute daher, dass es einen gesonderten API-Befehl dafür gibt, so à la CloseInternetConnection_() oder so.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

WNetCancelConnection

The WNetCancelConnection function breaks an existing network connection.

Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As Long

· lpName
Points to a null-terminated string that specifies the name of either the redirected local device or the remote network resource to disconnect from. When this parameter specifies a redirected local device, only the specified device redirection is broken. If the parameter specifies a remote network resource, only the connections to remote networks without devices are broken.

· fForce
Specifies whether the disconnection is to occur even if there are open files or jobs on the connection. If this parameter is FALSE, the function fails if there are open files or jobs.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Robert
Beiträge: 25
Registriert: 14.09.2004 23:24

Beitrag von Robert »

Code: Alles auswählen

ConnectionID = 1
success = InternetHangup_(ConnectionID, 0)
If Success = 0
  MessageRequester("InternetConnection", "Verbindung getrennt!", #MB_ICONINFORMATION)
Else
  MessageRequester("InternetConnection", "Trennen fehlgeschlagen!", #MB_ICONINFORMATION)
EndIf
Klappt zumindest hier bei mir für ADSL.
Robert
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn man ZoneAlarm benutzt, kann man sich mit der Funktion "Internetsperre aktivieren" behelfen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Robert Wünsche
Beiträge: 243
Registriert: 29.08.2004 12:46
Wohnort: Irgendwo im nirgendwo
Kontaktdaten:

Beitrag von Robert Wünsche »

Robert hat geschrieben:

Code: Alles auswählen

ConnectionID = 1
success = InternetHangup_(ConnectionID, 0)
If Success = 0
  MessageRequester("InternetConnection", "Verbindung getrennt!", #MB_ICONINFORMATION)
Else
  MessageRequester("InternetConnection", "Trennen fehlgeschlagen!", #MB_ICONINFORMATION)
EndIf
Klappt zumindest hier bei mir für ADSL.
Nicht die spur, "Trennen fehlgeschlagen!" !
Funktioniert also nicht überall. :freak:
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Funzt bei mir auch nicht.

Hab hier Internet über einen Router.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Robert
Beiträge: 25
Registriert: 14.09.2004 23:24

Beitrag von Robert »

Hallo Robert, hallo Laurin,

schade, daß es bei euch nicht geklappt hat. Könnte vielleicht an der ConnectionId liegen, mal mit höherer Id probiert? Ich hab hier nur eine einzige, einfache Internetverbindung, also keinen Router, kein Netzwerk oder Heimnetzwerk oder dgl.
Ist aber wahrscheinlich eine komplexere Thematik, wie DarkDragon schon angedeutet hat.
Robert
Robert
Beiträge: 25
Registriert: 14.09.2004 23:24

Beitrag von Robert »

Noch ein Nachtrag: Workaround mit 'rasdial' (engl. Forum)

Code: Alles auswählen

Success = ShellExecute_(0, "open", "rasdial", "/disconnect", "", #SW_HIDE)
If Success > 32
  MessageRequester("InternetConnection", "Verbindung getrennt!", #MB_ICONINFORMATION)
Else
  MessageRequester("InternetConnection", "Leider immer noch verbunden!", #MB_ICONINFORMATION)
EndIf
Geht auch bei mir, vielleicht ja diesesmal auch bei euch.
Robert
Antworten