raw socket
Ondra Holecek
bln at bln.no-ip.org
Mon Mar 8 23:44:18 CET 2004
Ahoj
mam takovy kus kodu:
int sockfd, sd;
struct sockaddr_in toaddr;
sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
sd = 1;
setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &sd, sizeof(sd));
printf("sockfd: %i, errno: %d\n", sockfd, errno);
toaddr.sin_addr.s_addr = inet_addr("192.168.1.1");
toaddr.sin_port = 0;
toaddr.sin_family = AF_INET;
sd = sendto(sockfd, packet, delka, 0, (struct sockaddr *)&toaddr,
sizeof(struct sockaddr));
printf(": %d, delka: %d, errno: %d\n", sd, delka, errno);
close(sockfd);
pokud ho prelozim a spustim na fbsd 5.1-REL, dostanu nasledujici vypis
sockfd: 3, errno: 0
: -1, delka: 40, errno: 22
tj, ze vytvoril raw socket a nastavil mu ze chci posilat vlastni IP hlavicky i
TCP atd. Problem ale je ze uz to nechce poslat error 22 znamena EINVAL /
Invalid argument/. Ale vyzkousel jsem to prelozit a spustit na linuxu a tam
to funguje bez problemu. V cem je teda chyba?
More information about the Users-l
mailing list