Sockets udp source port



  • Hallo!
    Ich habe mal eine Frage in Bezug auf Socketprogrammierung unter XP:

    Seit SP2 ist ja nicht mehr so ohne weiteres Möglich RAW Sockets zu erstellen. Gibt es trotzdem eine Möglichkeit den Source-Port eines UDP-Pakets festzulegen. Ggf. funktioniert das ja sogar ohne RAW-Sockets. Netcat kann das ja auch und soll soweit ich gelesen habe keine RAW-Sockets nutzen.

    Um das nochmal zu erklären:

    Client
    Source-Port 1024
    Destination 2024

    --->> Senden...

    Server
    Listen auf 2024

    Danke für die Hilfe.

    Gruß
    KMB



  • kann sein das es geht. wenn du aber was besseres als raw sockets brauchst, dann nimm das: http://www.winpcap.org/
    🙂



  • Ja, schon klar. Mit PCAP würde es auch gehen. Aber ich wollte das eigentlich mit den Standarts machen ohne extra Tools zu installieren. Sonst noch Vorschläge?

    Gruß
    kmb



  • kmb schrieb:

    Ich habe mal eine Frage in Bezug auf Socketprogrammierung unter XP:

    und was hat das mit ANSI C zu tun ? 😕



  • Also ich hab hier im ANSI Forum schon so einge Posts zum Thema Winsock entdeckt. Also denk ich mal ist es schon korrekt angesiedelt. Oder hast du ein Vorschlag in welches Forum ich posten sollte?

    Gruß

    kmb



  • Hallo.

    Hier die Lösung zu meinem Problem:

    Ich habe jeweils zwei Socketaddr_inn erstellt, eine für remote und eine für lokale. Auf die lokale habe ich einen bind gemacht.

    SOCKADDR_IN localAddr;
    SOCKADDR_IN remoteAddr;

    //Lokale Adresse definieren
    localAddr.sin_family=AF_INET;
    localAddr.sin_port=htons(1024);
    localAddr.sin_addr.s_addr=ADDR_ANY;

    //Remote Adresse definieren
    remoteAddr.sin_family=AF_INET;
    remoteAddr.sin_port=htons(2024);
    remoteAddr.sin_addr.s_addr = inet_addr(argv[1]);

    //lokalen Port binden
    rc=bind(s,(SOCKADDR*)&localAddr,sizeof(SOCKADDR_IN));

    //Paket senden
    rc=sendto(s,buf,strlen(buf),0,(SOCKADDR*)&remoteAddr,remoteAddrLen);

    Das war's! Achso, Wireshark macht sich da für die Fehlersuche bzw. Kontrolle ziemlich gut. Man kann aber mit Wireshark wohl nicht auf localhost sniffen. Netcat ist ebenfalls zum testen sehr gut.

    Gruß

    Marcel



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply