Zum Inhalt springen

Verbindungen messen [VC 7.0, MFC]


Scratch

Empfohlene Beiträge

Hi,

ich möchte ein Programm schreiben das mir ständig die Geschwindigkeit aller laufenden Verbindungen anzeigt. Auch die Verbindungszeit wäre gut zu wissen.

Sowas wie der DSL Speedmanager von T-Online oder dem Windows Taskmanager (Netzwerk)

Wie kann ich die Anzahl der Verbindungen ermitteln, ihre Geschwindigkeit und Verbindungsdauer ?

Danke für jede Hilfe !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich habe schon mal sowas ähnliches geschrieben, kann dir aber leider jetzt keinen beispiel geben.

in MSDN findest du eine ganze menge dazu wenn du RAS (remote access server) eingebst

wenn dich das


DWORD RasEnumConnections(
LPRASCONN lprasconn, // buffer to receive connections data
LPDWORD lpcb, // size in bytes of buffer
LPDWORD lpcConnections
// number of connections written to buffer
);
[/PHP]

nicht weiter bringt dann sag bescheid, und ich gebe dir heute abend einen quellcode

dazu.

P.S. Unter "RAS Sample" findest du im MSDN einen beispiel wie man die ganzen functionen benutzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich habs versucht aber ich bin nicht sehr weit gekommen ... hab das Sample auch nur in VB gefunden was mir auch nur wenig half ...


int nRet;
RASCONN Verbindung;
DWORD nVerbindungen;
DWORD nBytesderVerbindungen;

nRet = RasEnumConnections(&Verbindung, &nBytesderVerbindungen, &nVerbindungen)

if(nRet != 0)
{
MessageBox("Fehler!");
}
else if(nRet == 0 && nVerbindungen == 0)
{
MessageBox("Gar keine Verbindungen aktiv !");
}
else
{
MessageBox("Stimmt alles !");
for(int i = 0;i < nVerbindungen;i++)
{
// was kommt hier hin ?????
}
}
[/PHP]

guck mal drüber ist vielleicht ein anfang ...

Danke für die Hilfe !!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Verbindung zeigt bei dir jetzt auf ein Array von RASCONN Strukturen, die die

Informationen zu jeder Verbindung enthalten. In dem 2. Parameter den du

RASEnumConnections() übergeben hast ist die Größe des Arrays drin, wenn du

die durch sizeof(RASCONN) teilst, solltest du die Anzahl der Arrays erhalten (=Anzahl

der Verbindungen). Damit kannst du ja dann einfach die Infos auslesen.

Gruß

Guybrush

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hatte auch eine weile gebraucht bis ich einen brauchbaren quelltext geschrieben habe.

Wenn ich heute abend zu hause bin dann poste ich dir meinen quelltext.

Es ist lange hier wo ich das geschrieben habe und kann dir leider jetzt nicht weiter helfen.

Der vorschlag von Guybrush müsste funzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Die folgenden header-dateien muss du includieren:

#include <ras.h>

#include <raserror.h>

und so findest du heraus wie viele verbindungen aktiv sind:


LPRASCONN rasConn;
unsigned long iSize, iNumber, iResult;
rasConn = (LPRASCONN) malloc (sizeof (RASCONN) * 10); // 10 steht fuer 10 verbindungen und nicht vergessen
//den speicher wieder frei zu geben wenn nicht mehr gebraucht wird
rasConn[0].dwSize = sizeof (RASCONN);
iSize = 10 * sizeof (RASCONN);

iResult = RasEnumConnections (rasConn, &iSize, &iNumber);
/*iNumber = anzahl der aktiven verbindungen
mit eine for-schleife kannst du auch noch ein paar andere infos auslesen:
for(long i = 0;i < iNumber;i++)
{
rasConn[i].szEntryName; //name der verbindung
rasConn[i]->szDeviceType;// und so weiter...
}
*/
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Danke erstmal !!!

Ich hab das soweit übernommen und mal getestet


LPRASCONN rasConn;
unsigned long iSize, iNumber, iResult;
rasConn = (LPRASCONN) malloc (sizeof (RASCONN) * 10); // 10 steht fuer 10 verbindungen und nicht vergessen
//den speicher wieder frei zu geben wenn nicht mehr gebraucht wird
rasConn[0].dwSize = sizeof (RASCONN);
iSize = 10 * sizeof (RASCONN);

iResult = RasEnumConnections (rasConn, &iSize, &iNumber);
/*iNumber = anzahl der aktiven verbindungen
mit eine for-schleife kannst du auch noch ein paar andere infos auslesen:

*/
for(unsigned long i = 0;i < iNumber;i++)
{
MessageBox("rasConn[i].szEntryName"); //name der verbindung
//rasConn[i]->szDeviceType;// und so weiter...
}
[/PHP]

jedoch bekomme ich immer folgenden Fehler:

Traffic error LNK2019: unresolved external symbol _RasEnumConnectionsA@12 referenced in function "public: void __thiscall CTrafficDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CTrafficDlg@@QAEXXZ)

Traffic fatal error LNK1120: 1 unresolved externals

Da weis ich net weiter ... :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich benutze WinXP

Danke es geht !

Wie kann ich denn jetzt noch den Transfer auslesen ? Wenn möglich sollte ich auch zwischen Down- und Upload unterscheiden können !

Bekommt man irgendwo noch mehr informationen über RAS ?? So wie im Eigenschaftsfenster von WinXP ??? IP usw ... ??

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür muss du dir dieser

DWORD RasAdminPortGetInfo(

const WCHAR *lpszServer, // pointer to the server name

const WCHAR *lpszPort, // pointer to the name of port on the server

RAS_PORT_1 *pRasPort1, // receives the state of the port

RAS_PORT_STATISTICS *pRasStats, // receives statistics about the port

RAS_PARAMETERS **ppRasParams // receives an array of media-specific parameters and values

);

funktion genauer angucken.

Wenn der lpszServer = NULL ist dann wird der lokaler rechner angesprochen und den

lpszPort bekommst du (bin aber nicht sicher) mit dieser

DWORD RasAdminPortEnum(

const WCHAR *lpszServer, // pointer to the server name

PRAS_PORT_0 *ppRasPort0, // receives a pointer to an array of port information

WORD *pcEntriesRead // receives the number of ports enumerated

);

funktion.

ppRasPort0->wszPortName;

Ich weiss aber nicht ob das so funktioniert, ist nur eine idee, aber hoffe das es dir hilft.

P.S. "rassapi.h" muss du includieren und mit "rassapi.lib" verlinken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...