Привет!
решил написать программку которая будет ловить Ip
пакеты используя RAW сокеты. почитал доки маны форумы , и написал , но почему-то не пашет - функция recivfrom не возвращает ничего, так и висим. текст:
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netinet/in_systm.h>
#include<netinet/ip.h>
#include<netinet/ip_icmp.h>
#include<strings.h>
#include<unistd.h>
int main(int argc,char *argv[])
{
int sockd,r;
struct sockaddr_in mysocket;
struct sockaddr from;
char msg[2048];
socklen_t fl;
if((sockd = socket(AF_INET,SOCK_RAW, IPPROTO_RAW)) < 0)
{
perror("socket");
exit(-1);
}
bzero(&from,sizeof (from));
fl=sizeof (from);
while ( 1)
{
int i;
recvfrom(sockd,msg,32,0x0,&from,&fl); // !ВСЕ!
printf("%s\n",from.sa_data);
for (i=0;i<fl;i++) printf("%X ",msg[i]);
printf ("\n");
}
return 0;
}
где грабли ?