PDA

View Full Version : C/C++ modem byte letti/scritti


misterx
26-08-2003, 22:42
che API uso per ottenere in una sessione internet il numero di byte letti e scritti dal mio modem ?

grazie

mjordan
26-08-2003, 22:58
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 )

mjordan
26-08-2003, 23:00
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.

misterx
26-08-2003, 23:11
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

mjordan
26-08-2003, 23:28
Originariamente inviato da misterx
avendo specificato API

non so se esistono per UNIX

Ma almeno sai che vuol dire API?

misterx
27-08-2003, 10:36
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

x110
27-08-2003, 11:59
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.

cionci
27-08-2003, 14:44
Prova con RasGetConnectionStatistics... Avevo fatto anche una prova su questa cosa, ma non mi ricordo se era questa l'API...

misterx
27-08-2003, 17:45
grazie, provo:)

mjordan
27-08-2003, 23:42
Bello il clock ;)

misterx
28-08-2003, 20:56
Originariamente inviato da mjordan
Bello il clock ;)


grazie, è un gadget nato come semplice passatempo

x Cionci
ho il "WIN32.HLP" obsoleto:p

cionci
29-08-2003, 09:12
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

cionci
29-08-2003, 09:47
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;
}

misterx
29-08-2003, 11:49
certo che mi interessa la tua prova!

cavoli, sono 340 Mb di download, vabbè, con calma:)

misterx
01-09-2003, 07:59
oh, finalmente ho trovato il tempo per continuare nella mia prova

sai che la RasGetConnectionStatistics non è presente nelle "Rasapi32.dll" di win98 ?

cionci
01-09-2003, 09:05
Sì...credevo che ti servisse per 2000/XP...

misterx
01-09-2003, 09:06
ok, fa lo stesso; ora provo su 2000/xp:)

misterx
01-09-2003, 16:23
comunque, se ti capita sottomano qualcosa anche per win9x grazie

misterx
02-09-2003, 09:29
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

cionci
02-09-2003, 09:49
Ho dato un'occhiata veloce, ma non mi sembra che rilevi il numero di byte scritti/letti...o sbaglio ?

x110
02-09-2003, 13:13
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.

misterx
02-09-2003, 14:22
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:)

misterx
04-09-2003, 08:09
se hai qualcosa anche per la scheda di rete :)