Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

подсчет входящего трафика

9.3K
27 марта 2005 года
maxrus
12 / / 28.02.2005
Пишу небольшой билинг. На некотором интерфейсе нужно подсчитать входящий трафик. Посоветовали за основу взять такой код (само собой это только примерный вариант):

#include "stdafx.h"
#include "winsock2.h"
#include "stdio.h"

#pragma comment(lib,"ws2_32.lib")


#define SIO_RCVALL 0x98000001
#define PACKET_BUFFER_SIZE 0xFFFF

WSADATA wsadata;
SOCKET soc;
BOOLEAN term;

int main(int argc, char* argv[])
{
////////////////////////////////
sockaddr_in sa;
sockaddr sa2;
ULONG br, flags;
////////////////////////////////
WSAStartup(0x0101,&wsadata);
////////////////////////////////
soc=socket(AF_INET, SOCK_RAW, IPPROTO_IP);
if (soc==INVALID_SOCKET)
{
printf("cannot create socket");
return 1;
}
memset(&sa,0,sizeof(sockaddr_in));
memset(&sa2,0,sizeof(sockaddr));

sa.sin_family=AF_INET;
sa.sin_addr.s_addr=inet_addr("198.162.0.1");
sa.sin_port=htons(0);

memcpy(&sa2,&sa,sizeof(sa));
if ( bind(soc,&sa2,sizeof(sockaddr)) )
{
printf("socket bind error");
return 1;
}
flags=1;
if ( ioctlsocket(soc,SIO_RCVALL,&flags) )
{
printf("ioctlsocket() error");
return 1;
}
br=0;
char* buf=new char[PACKET_BUFFER_SIZE];
printf("service start succefull");
while (1)
{
br=recv(soc,buf,PACKET_BUFFER_SIZE, 0);
printf("%d bytes\n",br);
}

////////////////////////////////
delete [] buf;
WSACleanup();
return 0;
}

Хочу услышать: я в принципе на правильном пути? ну и советы если есть какие - буду благодарен...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог