View Full Version : C/C++ modem byte letti/scritti
che API uso per ottenere in una sessione internet il numero di byte letti e scritti dal mio modem ?
grazie
Originariamente inviato da misterx
che API uso per ottenere in una sessione internet il numero di byte letti e scritti dal mio modem ?
grazie
Ovviamente il sistema operativo usato è poco rilevante (da buon utente Windows
:D )
Originariamente inviato da mjordan
Ovviamente il sistema operativo usato è poco rilevante (da buon utente Windows
:D )
Comunque in ambiente UNIX dovresti creare un entry di device nel procfs e leggere i dati da li.
Per maggiori info: http://kernelnewbies.org/documents/kdoc/procfs-guide/lkprocfsguide.html
In ambiente Windows attendiamo si faccia avanti qualcun altro.
Originariamente inviato da mjordan
Ovviamente il sistema operativo usato è poco rilevante (da buon utente Windows
:D )
avendo specificato API
non so se esistono per UNIX
Originariamente inviato da misterx
avendo specificato API
non so se esistono per UNIX
Ma almeno sai che vuol dire API?
Originariamente inviato da mjordan
Ma almeno sai che vuol dire API?
ma no, figurati; scrivo qui sigle a caso al solo scopo di fare lo sborone
5 post e non ho risolto il mio problema
purtroppo api e' un termine generico e non api di windows.....
comunque
le quantita' di byte letti e spediti sono due variabili nel registro di config
almeno per quanto riguarda win 98.. altri so come windows non so.
win 2000 server 2003 xp me 95..............
devi guardare sotto i dati dinamici..
non ricordo quali sono ma saranno facilmente individuabili.
non posso controllare perche' sono diventato un utente linux dipendente
e ho cancellato tutte le copie di ms dalla mia vista.
consiglio: prova linux.
Prova con RasGetConnectionStatistics... Avevo fatto anche una prova su questa cosa, ma non mi ricordo se era questa l'API...
Originariamente inviato da mjordan
Bello il clock ;)
grazie, è un gadget nato come semplice passatempo
x Cionci
ho il "WIN32.HLP" obsoleto:p
Scarica il Platform SDK da M$...
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
Comunque la funzione è questa:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rras/rras/remote_access_service_functions.asp
Se ti interessa la prova che ho fatto poco tempo fa:
#include <windows.h>
#include <ras.h>
//#include <raserror.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
typedef struct _RAS_STATS {
DWORD dwSize;
DWORD dwBytesXmited;
DWORD dwBytesRcved;
DWORD dwFramesXmited;
DWORD dwFramesRcved;
DWORD dwCrcErr;
DWORD dwTimeoutErr;
DWORD dwAlignmentErr;
DWORD dwHardwareOverrunErr;
DWORD dwFramingErr;
DWORD dwBufferOverrunErr;
DWORD dwCompressionRatioIn;
DWORD dwCompressionRatioOut;
DWORD dwBps;
DWORD dwConnectDuration;
} RAS_STATS, *PRAS_STATS;
typedef DWORD (*lpfnDllFuncRGCS)(HRASCONN hRasConn,RAS_STATS *lpStatistics);//RasGetConnectionStatistics
typedef DWORD (*lpfnDllFuncRENC)(LPRASCONN lprasconn, LPDWORD lpcb, LPDWORD lpcConnections );//RasEnumConnections
typedef DWORD (*lpfnDllFuncRHU)(HRASCONN hrasconn);//RasHangUp
lpfnDllFuncRGCS lpfnDllFuncConnStat;
lpfnDllFuncRENC lpfnDllFuncEnumConn;
lpfnDllFuncRHU lpfnDllFuncHangUp;
HINSTANCE hDllLib;
RAS_STATS *lpStatistics;
struct ConnData{
string connName;
RASCONN *connPtr;
DWORD lastDataRecv;
DWORD lastDataSent;
};
int EnumActiveConnections(vector<ConnData> &act)
{
RASCONN * lpRasConn;
DWORD lpcb;
DWORD lpcConnections;
lpRasConn = (LPRASCONN) GlobalAlloc(GPTR, sizeof(RASCONN));
lpRasConn->dwSize = sizeof(RASCONN);
lpcb = sizeof(RASCONN);
if (lpfnDllFuncEnumConn(lpRasConn, &lpcb, &lpcConnections) != 0)
return -1;
for (unsigned int i = 0; i < lpcConnections; i++)
{
printf("Entry name: %s\n", lpRasConn->szEntryName);
int j = 0;
for(; j<act.size(); ++j)
if(act[j].connName == lpRasConn->szEntryName)
break;
if(j == act.size())
{
ConnData tmp;
tmp.connName = lpRasConn->szEntryName;
tmp.connPtr = lpRasConn;
act.push_back(tmp);
tmp.lastDataRecv = 0;
tmp.lastDataSent = 0;
}
else
{
act[j].connPtr = lpRasConn;
}
lpRasConn++;
}
GlobalFree((HGLOBAL)lpRasConn);
return 0;
}
void testConn(ConnData &c)
{
if(lpfnDllFuncConnStat(c.connPtr->hrasconn, lpStatistics) == ERROR_SUCCESS)
{
if(c.lastDataSent == lpStatistics->dwBytesXmited && c.lastDataRecv == lpStatistics->dwBytesRcved)
{
lpfnDllFuncHangUp(c.connPtr->hrasconn);
c.connName = "";
c.connPtr = NULL;
}
else
{
c.lastDataSent = lpStatistics->dwBytesXmited;
c.lastDataRecv = lpStatistics->dwBytesRcved;
}
}
}
int main()
{
hDllLib = LoadLibrary("rasapi32");
if(!hDllLib) return 1;
lpfnDllFuncConnStat = (lpfnDllFuncRGCS)GetProcAddress(hDllLib,"RasGetConnectionStatistics");
if(!lpfnDllFuncConnStat) return 1;
lpfnDllFuncEnumConn = (lpfnDllFuncRENC)GetProcAddress(hDllLib,"RasEnumConnectionsA");
if(!lpfnDllFuncEnumConn) return 1;
lpfnDllFuncHangUp = (lpfnDllFuncRHU)GetProcAddress(hDllLib,"RasHangUpA");
if(!lpfnDllFuncHangUp) return 1;
lpStatistics = (RAS_STATS *)GlobalAlloc(GPTR, sizeof(RAS_STATS));
lpStatistics->dwSize=sizeof(RAS_STATS);
vector<ConnData> v;
while(!EnumActiveConnections(v))
{
Sleep(2000);
for(vector<ConnData>::iterator it = v.begin(); it < v.end(); ++it)
testConn(*it);
}
GlobalFree(lpStatistics);
return 0;
}
certo che mi interessa la tua prova!
cavoli, sono 340 Mb di download, vabbè, con calma:)
oh, finalmente ho trovato il tempo per continuare nella mia prova
sai che la RasGetConnectionStatistics non è presente nelle "Rasapi32.dll" di win98 ?
Sì...credevo che ti servisse per 2000/XP...
ok, fa lo stesso; ora provo su 2000/xp:)
comunque, se ti capita sottomano qualcosa anche per win9x grazie
ho trovato qualcosa per BCB, posto il link nel caso servisse anche ad altri
http://www.bridgespublishing.com/articles/issues/9903/Using_RAS__part_1.htm
Ho dato un'occhiata veloce, ma non mi sembra che rilevi il numero di byte scritti/letti...o sbaglio ?
scusa se insisto, ma per le statistiche su 98
e' molto buono il sistema che ti ho indicato,
cioe' leggere 2 semplici valori dal registro sotto i dati dinamici.
ciao.
Originariamente inviato da cionci
Ho dato un'occhiata veloce, ma non mi sembra che rilevi il numero di byte scritti/letti...o sbaglio ?
non sbagli, ho postato il link in quanto vi è affinità con l'argomento trattato:)
se hai qualcosa anche per la scheda di rete :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.