Измерение трафика

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
gaizjad
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 22.05.2008 (Чт) 22:24

Измерение трафика

Сообщение gaizjad » 16.06.2009 (Вт) 19:33

Здравствуйте.
Нужно измерить входящий/исходящий трафик - (для нета)..
Я так понимаю, что это можно сделать с помощью WinAPI - не подскажете функцию??? :alien:

Dimen
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 82
Зарегистрирован: 25.05.2009 (Пн) 15:10

Re: Измерение трафика

Сообщение Dimen » 16.06.2009 (Вт) 19:47

На сколько я понимаю на VB это сделать будет довольно проблематично, если вообще возможно.
Вопрос доволно интересный будем ждать ответа более опытных пользователей форума.
Íå óïóñêàéòå øàíñ!

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

Re: Измерение трафика

Сообщение alibek » 16.06.2009 (Вт) 20:39

Поищи, на форуме уже было.
Но точно мерять не сможешь.
Lasciate ogni speranza, voi ch'entrate.

dcdlab
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 04.06.2009 (Чт) 2:14

Re: Измерение трафика

Сообщение dcdlab » 18.06.2009 (Чт) 11:46

Может быть, если через Proxy-сервер сделанный на VB... тогда можно и точно.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Измерение трафика

Сообщение Хакер » 18.06.2009 (Чт) 11:47

Чушь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dcdlab
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 04.06.2009 (Чт) 2:14

Re: Измерение трафика

Сообщение dcdlab » 18.06.2009 (Чт) 11:48

Почему? Ведь через proxy пройдет весь входящий и исходящий трафик?

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

Re: Измерение трафика

Сообщение alibek » 18.06.2009 (Чт) 12:42

Твой прокси будет считать только тот трафик, который идет через него.
Lasciate ogni speranza, voi ch'entrate.

dcdlab
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 04.06.2009 (Чт) 2:14

Re: Измерение трафика

Сообщение dcdlab » 18.06.2009 (Чт) 12:46

Согласен, но человек попросил лишь интернет трафик и возможно ему не важно идет ли этот трафик через Proxy и возможно других трафиков у него нет или их учитывать не надо.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Измерение трафика

Сообщение Хакер » 18.06.2009 (Чт) 12:49

Придерживаясь такого образа мышления, можно предположить, что у него вообще нет трафика, а значит для его измерения можно использовать константу-ноль. Так?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Re: Измерение трафика

Сообщение alibek » 18.06.2009 (Чт) 12:50

Думаешь, написать HTTP-прокси будет проще, чем считывать показания со счетчиков?
Даже с SOCKS-прокси сложности будут, не то что с HTTP.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Измерение трафика

Сообщение Денис » 18.06.2009 (Чт) 13:00

Да что там прокси!
Вот каспер для анализа трафика ставит свой драйвер в сетевые подключения. весь трафик направляется на локальный порт, где сидит сканер каспера, потом проверенный трафик направляется по своим адресам. Сделай так, gaizjad, это еще сложнее. :lol:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Измерение трафика

Сообщение JohnK » 18.06.2009 (Чт) 22:38

Смотри в сторону вот этой функции:
Код: Выделить всё
Private Declare Function GetIfTable Lib "iphlpapi.dll" _
  (ByRef pIfTable As Any, _
   ByRef pdwSize As Long, _
   ByVal bOrder As Long) As Long


Там в структуре MIB_IFROW есть массу "вкусного"
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Измерение трафика

Сообщение awl100Alex » 19.06.2009 (Пт) 10:14

gaizjad
Посмотри где можно скачать вот этот контрол - IControl...
http://www.freesoft.ru/?id=78699

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Измерение трафика

Сообщение Williams » 19.06.2009 (Пт) 17:32

Денис писал(а):Вот каспер для анализа трафика ставит свой драйвер в сетевые подключения. весь трафик направляется на локальный порт, где сидит сканер каспера, потом проверенный трафик направляется по своим адресам


Имхо, так делают все сетевые экраны, по крайней мере под окна.
И вы думаете, что вас оставят в живых после прочтения этого поста?

HiddenMan
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 13.12.2006 (Ср) 20:58
Откуда: от туда

Re: Измерение трафика

Сообщение HiddenMan » 19.06.2009 (Пт) 19:56

С уважением, я.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: Измерение трафика

Сообщение JohnK » 19.06.2009 (Пт) 20:46

Блин, сколько можно мусолить тему?

Код: Выделить всё
Option Explicit
Private Const MAX_INTERFACE_NAME_LEN  As Long = 256
Private Const ERROR_SUCCESS   As Long = 0
Private Const MAXLEN_IFDESCR    As Long = 256
Private Const MAXLEN_PHYSADDR   As Long = 8

Private Type MIB_IFROW
   wszName(0 To (MAX_INTERFACE_NAME_LEN - 1) * 2) As Byte
   dwIndex              As Long
   dwType               As Long
   dwMtu                As Long
   dwSpeed              As Long
   dwPhysAddrLen        As Long
   bPhysAddr(0 To MAXLEN_PHYSADDR - 1) As Byte
   dwAdminStatus        As Long
   dwOperStatus         As Long
   dwLastChange         As Long
   dwInOctets           As Long
   dwInUcastPkts        As Long
   dwInNUcastPkts       As Long
   dwInDiscards         As Long
   dwInErrors           As Long
   dwInUnknownProtos    As Long
   dwOutOctets          As Long
   dwOutUcastPkts       As Long
   dwOutNUcastPkts      As Long
   dwOutDiscards        As Long
   dwOutErrors          As Long
   dwOutQLen            As Long
   dwDescrLen           As Long
   bDescr(0 To MAXLEN_IFDESCR - 1) As Byte

End Type
   
Private Declare Function GetIfTable Lib "iphlpapi.dll" (ByRef pIfTable As Any, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Declare Function inet_ntoa Lib "wsock32" (ByVal addr As Long) As Long
Private Declare Function lstrcpyA Lib "kernel32" (ByVal RetVal As String, ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
Private Declare Function GetFriendlyIfIndex Lib "iphlpapi" (ByVal IfIndex As Long) As Long

Dim first As Boolean
Dim cnt As Long


Private Sub Get_traf()
   Dim IPInterfaceRow As MIB_IFROW
   Dim buff() As Byte
   Dim cbRequired As Long
   Dim nStructSize As Long
   Dim nRows As Long
   Dim n As Long
   Dim tmp As String
   
   Call GetIfTable(ByVal 0&, cbRequired, 1)
   If cbRequired > 0 Then
      ReDim buff(0 To cbRequired - 1) As Byte
      If GetIfTable(buff(0), cbRequired, 1) = ERROR_SUCCESS Then
         nStructSize = LenB(IPInterfaceRow)
         CopyMemory nRows, buff(0), 4
     
           If first Then
             lst1.Clear
             For cnt = 1 To nRows
              CopyMemory IPInterfaceRow, buff(4 + (cnt - 1) * nStructSize), nStructSize
              Listbox1.AddItem TrimNull(StrConv(IPInterfaceRow.bDescr, vbUnicode))
             Next cnt
             first = False
             cnt = 3
           End If

               CopyMemory IPInterfaceRow, buff(4 + (cnt - 1) * nStructSize), nStructSize
               Label1.Caption = "In: " & FormatNumber(IPInterfaceRow.dwInOctets, 0) & " Out: " & FormatNumber(IPInterfaceRow.dwOutOctets, 0)
                     
      End If
   End If

End Sub

Private Function TrimNull(item As String)
   Dim pos As Integer
   pos = InStr(item, Chr$(0))
    If pos Then
       TrimNull = Left$(item, pos - 1)
    Else
       TrimNull = item
    End If
End Function

Private Sub Form_Load()
first = True
End Sub

Private Sub Listbox1_Click()
cnt = Listbox1.ListIndex + 1
End Sub

Private Sub Timer1_Timer()
Call Get_traf
End Sub


P.S. На форму не забудь кинуть Label1, ListBox1, Timer1 (interval=1000)
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Измерение трафика

Сообщение awl100Alex » 19.06.2009 (Пт) 23:11

По ссылке, которую дал HiddenMan расчет трафика вроде как точнее... по крайней мере, в точности как то отображает сама система, если смотреть в свойствах подключения. А по коду JohnK цифры ненамного, но все же отличаются.

К тому же, если из первого кода (HiddenMan)... выбросить все, что касается Win9x, то он намного упрощается.

gaizjad
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 22.05.2008 (Чт) 22:24

Re: Измерение трафика

Сообщение gaizjad » 21.06.2009 (Вс) 11:48

Спасибо, JohnK, - всё работает :alien:


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 71

    TopList