ich habe eine Frage bezüglich winsock2 und zwar. ich versuche gerade meine eigene DNS-Packete zusammenzubasteln. so ungefähr sieht mein code aus : unsigned char DnsPacket[]= "451b01000001000000000000047465737406646f6d61696e03636f6d0000010001"; ... if (send(sock, &DnsPacket, len, 0) !=len) error_exit("send() Failed!!!!"); es klappt wunderbar nur mein sniffer zeigt mit dass das DNS Packet malformed ist. und zwar weil send() sendet den Inhalt des Packets als char array und nicht als array mit hexadezimalwerten :-(
ich weiss dass send() nur char arrays sendet, gibt es keine möglichkeit Hex arrays zu senden ohne dass den Inhalt des arrays nochmal ins Hex convertiert wird??? mach ich irgendwas falsch??? Danke
Was willst du eigentlich ein Char Array ist nach C Standard ein Feld von 8Bit Daten. Das ist normalerweise die Art der Adressierung von aktuellem Speicher Byteweise Adressierung. Also schiebst du deine Daten Byte für Byte auf die Socket. Hexadezimal ist ja nur eine Darstellungsform für binäre Daten(bzw ein anderes Zahlensystem), aber grundsätzlich ändert sich ja nichts an den Daten, du wirst wohl eher falsche Daten übertragen. Achso und nebenbei es gibt Protokoll Funktionen unter Windows und Linux die das auflösen von DNS Adressen übernehmen.Dieser Post wurde am 15.11.2006 um 00:15 Uhr von Blubber2063 editiert.
Btw, du darfst natürlich keine Zeichen für echte Werte halten, du schreibst ja Zeichen in dein Array, da dürfen natürlich nur die Zahlen drinne stehen.