IP-Socket nutzen



  • wie kann ich ein IP socket unter windows xp/2k nutzen. UDP/TCP geht nich muss schon IP sein. 😕



  • IP = ICMP ???



  • das einzige, was mit dazu einfällt, sind raw sockets, die du
    mittels SOCK_RAW erzeugen kannst. allerdings bist du damit auf
    ICMP beschränkt. liegt zwar im selben layer wie IP, is aber eben
    ICMP.



  • Ah ich hab die Lösung auf www.c-workers.ch gefunden :D. Man muss nich umbedingt ICMP nehmen man kann auch IP header basteln



  • Wonko schrieb:

    das einzige, was mit dazu einfällt, sind raw sockets, die du
    mittels SOCK_RAW erzeugen kannst. allerdings bist du damit auf
    ICMP beschränkt. liegt zwar im selben layer wie IP, is aber eben
    ICMP.

    So ein Quatsch!
    Mit

    WSASocket(PF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, 0);
    

    Bekommst du einen socket, der auf dem Network Layer aufsetzt. Nicht mehr und nicht weniger.
    Verwendest du dazu noch folgendes,

    int one = 1;
    setsockopt(sd, IPPROTO_IP, IP_HDRINCL, (const char *) &one, sizeof(one))
    

    wird dir vom Stack auch das Handling für IP überlassen, du setzt "quasi" auf den Data Link Layer auf. (Zumindest bis auf wenige Kleinigkeiten die du dir trotzdem abnehmen lassen kannst, wie z.B. CRC-Berechnung)

    Gruss
    Michael


Anmelden zum Antworten