Счетчик трафика

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Счетчик трафика

Сообщение inf » 14.01.2007 (Вс) 15:07

Доброго всем времени суток.
Вот как-то насидел я в инете больше чем надо, аж на 1.5 гига. Сразу возникло много вопросов: Как за неделю стока трафы можно слить? Когда? Почему? За што????!!!
Искал в инете счетчики трафиков ничего путного не нашел. Самое мне подходящее это Traffic Counter (отечественного производителя(это радует)). Но мне надо еще проще.
У меня есть определенное колличество Мб в месяц, лучше этот лимит не превышать. А в Traffic Counter нельзя поставить ограничение на колличество трафика и нельзя убрать колонку сумма, которая мне совсем не нужна.
Так вот решил я написать программку для учета трафика. Но незнаю с чего начать :roll: . Слышал што колличество исходящего\входящего трафика в реестре хранится. А где вот незнаю :( . Подскажите хоть как нибудь. Но лучше исходником, я не собираюсь распространять программу. Она нужна мне чисто для личного пользования(простая и не ресурсоёмкая). Доработаю сам. Нужно самое главное только узнать кол-во трафика и все(в байтах).
По форуму искал ничего стоящего не нашел.
Заранее спасибо!
Изображение

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 14.01.2007 (Вс) 20:11

ЛЮДИ, люди, человеки.....!!! Неужели никто не знает :shock:
Поискам по форуму я понял што я такой не один и проблема очень актуальная... Пожалуйста не оставляйте эту тему без внимания
Изображение

Setr
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 08.01.2007 (Пн) 17:15

Сообщение Setr » 14.01.2007 (Вс) 20:50

Посмотри примеры здесь, может поможет
http://bbs.vbstreets.ru/viewtopic.php?t=26569

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Сообщение -=TsA=- » 14.01.2007 (Вс) 21:20

Сразу предупреждаю, это не мое

Код: Выделить всё
Option Explicit

Public Enum OperationalStates
    MIB_IF_OPER_STATUS_NON_OPERATIONAL = 0
    MIB_IF_OPER_STATUS_UNREACHABLE = 1
    MIB_IF_OPER_STATUS_DISCONNECTED = 2
    MIB_IF_OPER_STATUS_CONNECTING = 3
    MIB_IF_OPER_STATUS_CONNECTED = 4
    MIB_IF_OPER_STATUS_OPERATIONAL = 5
End Enum

Public Enum InterfaceTypes
    MIB_IF_TYPE_OTHER = 1
    MIB_IF_TYPE_ETHERNET = 6
    MIB_IF_TYPE_TOKENRING = 9
    MIB_IF_TYPE_FDDI = 15
    MIB_IF_TYPE_PPP = 23
    MIB_IF_TYPE_LOOPBACK = 24
    MIB_IF_TYPE_SLIP = 28
End Enum

Public Enum AdminStatuses
    MIB_IF_ADMIN_STATUS_UP = 1
    MIB_IF_ADMIN_STATUS_DOWN = 2
    MIB_IF_ADMIN_STATUS_TESTING = 3
End Enum

Private Const MAXLEN_IFDESCR = 256
Private Const MAXLEN_PHYSADDR = 8
Private Const MAX_INTERFACE_NAME_LEN = 256

Private Const ERROR_NOT_SUPPORTED = 50&
Private Const ERROR_SUCCESS = 0&


Private Type MIB_IFROW
    wszName(0 To 511) As Byte
    dwIndex As Long             '// Индекс интерфейса
    dwType As Long              '// Тип интерфейса
    dwMtu As Long               '// max transmission unit
    dwSpeed As Long             '// speed of the interface
    dwPhysAddrLen As Long       '// length of physical address
    bPhysAddr(0 To 7) As Byte   '// physical address of adapter
    dwAdminStatus As Long       '// administrative status
    dwOperStatus As Long        '// operational status
    dwLastChange As Long        '// last time operational status changed
    dwInOctets As Long          '// octets received
    dwInUcastPkts As Long       '// unicast packets received
    dwInNUcastPkts As Long      '// non-unicast packets received
    dwInDiscards As Long        '// received packets discarded
    dwInErrors As Long          '// erroneous packets received
    dwInUnknownProtos As Long   '// unknown protocol packets received
    dwOutOctets As Long         '// octets sent
    dwOutUcastPkts As Long      '// unicast packets sent
    dwOutNUcastPkts As Long     '// non-unicast packets sent
    dwOutDiscards As Long       '// outgoing packets discarded
    dwOutErrors As Long         '// erroneous packets sent
    dwOutQLen As Long           '// output queue length
    dwDescrLen As Long          '// length of bDescr member
    bDescr(0 To 255) As Byte    '// interface description
End Type

Private Declare Function GetIfTable Lib "iphlpapi" (ByRef pIfRowTable As Any, ByRef pdwSize As Long, ByVal border As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef pDest As Any, ByRef pSource As Any, ByVal Length As Long)


Private m_lngBytesReceived  As Long
Private m_lngBytesSent      As Long
Private m_OldBytesReceived  As Long
Private m_OldBytesSent      As Long

Public Property Get BytesReceived() As Long
    If m_OldBytesReceived > 0 Then
        BytesReceived = m_lngBytesReceived - m_OldBytesReceived
    End If
    m_OldBytesReceived = m_lngBytesReceived
End Property

Public Property Get BytesSent() As Long
    If m_OldBytesSent > 0 Then
        BytesSent = m_lngBytesSent - m_OldBytesSent
    End If
    m_OldBytesSent = m_lngBytesSent
End Property

Public Function GetIPStats() As Boolean
    '
    Dim arrBuffer()     As Byte
    Dim lngSize         As Long
    Dim lngRetVal       As Long
    Dim lngRows         As Long
    Dim I               As Integer
    Dim J               As Integer
    Dim IfRowTable      As MIB_IFROW
    '
    lngSize = 0
    '
    'Reset the BytesReceived and BytesSent properties
    '
    m_lngBytesReceived = 0
    m_lngBytesSent = 0
    '
    'Call the GetIfTable just to get the buffer size into the lngSize variable
    lngRetVal = GetIfTable(ByVal 0&, lngSize, 0)
    '
    If lngRetVal = ERROR_NOT_SUPPORTED Then
        '
        'This API works only on Win 98/2000 and NT4 with SP4
        MsgBox "IP Helper is not supported by this system."
        Exit Function
        '
    End If
    '
    'Prepare the buffer
    ReDim arrBuffer(0 To lngSize - 1) As Byte
    '
    'And call the function one more time
    lngRetVal = GetIfTable(arrBuffer(0), lngSize, 0)
    '
    If lngRetVal = ERROR_SUCCESS Then
        '
        'The first 4 bytes (the Long value) contain the quantity of the table rows
        'Get that value into the lngRows variable
        CopyMemory lngRows, arrBuffer(0), 4
        '
        For I = 1 To lngRows
            '
            'Copy the table row data to the IfRowTable structure
            CopyMemory IfRowTable, arrBuffer(4 + (I - 1) * Len(IfRowTable)), Len(IfRowTable)
            '
            With IfRowTable
                '
                'Собор движение инфо для всех интерфейсов
                ' .dwType
                m_lngBytesReceived = m_lngBytesReceived + .dwInOctets
                m_lngBytesSent = m_lngBytesSent + .dwOutOctets
                '
            End With
        Next I
        '
    End If
    '
End Function

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 16.01.2007 (Вт) 20:10

Setr это я уже видел. Кстати там одна ссылка указывает на несуществующий топик.

-=TsA=- Пробывал? У меня вот чет не хочет воркать =( постоянно по нулям. Я в трафике, как я уже сказал, не очень шарю она должна сама считать трафик или откуда-то брать? Смотрел, смотрел так и не понял :?
Изображение

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 17.01.2007 (Ср) 7:41

inf, ИМХО на ВБ полный и правильный трафик не посчитаешь. Все, известные мне, счетчики юзают ядро(или еще че-то) на языках низкого уровня, типо асемблера.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.01.2007 (Ср) 8:52

inf, используй TMeter или BWMeter.
Lasciate ogni speranza, voi ch'entrate.

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 17.01.2007 (Ср) 11:30

alibek юзаю Trafic Counter. Мне просто нужно штобы оповещал о заканчивании трафика месячного и убрать колонку цена.
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.01.2007 (Ср) 11:48

inf
Таки используй Tmeter, подключи его к какой-нибудь базе данных, он туда будет сливать объем трафика, и напиши простую проверялку этой базы.
Лучший способ понять что-то самому — объяснить это другому.

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 17.01.2007 (Ср) 20:40

Antonariy
Это лишние ресурсы машины отбераца будут (ничтожно мало, но всетаки). Мне нужна предельно простая прога.
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.01.2007 (Ср) 21:49

Это и есть предельно простая. Но, если для тебя геморой таки важнее результата, флаг в руки...
Лучший способ понять что-то самому — объяснить это другому.

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 18.01.2007 (Чт) 17:22

Понятно. =) Бум думать =)
Изображение

AntonGV
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 24.05.2006 (Ср) 12:10
Откуда: г. Пермь

Сообщение AntonGV » 18.01.2007 (Чт) 18:25

Программа не моя и я обещал автору не распространять её, так что тсс...
Вложения
AxInetExplore.rar
(115.17 Кб) Скачиваний: 85
Если долго мучиться, что-нибудь получится

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Сообщение -=TsA=- » 19.01.2007 (Пт) 16:34

inf писал(а):-=TsA=- Пробывал? У меня вот чет не хочет воркать =( постоянно по нулям. Я в трафике, как я уже сказал, не очень шарю она должна сама считать трафик или откуда-то брать? Смотрел, смотрел так и не понял :?


Пробовал :lol:
Вложения
Traffic.zip
Подсчет трафика из VB
(4.38 Кб) Скачиваний: 69

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 20.01.2007 (Сб) 21:59

-=TsA=-
Спс буду искать ошибки. Щас времени нету совсем, даже штоб просто просмотреть пишу в торопях.
AntonGV
Ок. =) Ты ж знаешь я - могила =)
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 97

    TopList