подсчет входящего трафика
#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;
}
Хочу услышать: я в принципе на правильном пути? ну и советы если есть какие - буду благодарен...