Versand einer 16bit SeqNo in 2 Bytes



  • Hallo an alle,

    ich versuche eine 16bit(unsigned short) Nummer auf 2 Bytes aufzuteilen

    unsigned char Tmp[1000];
    
    Tmp[0] = (seqno >> 8) & 0xFF;
    Tmp[1] = seqno & 0xFF;
    //Edit: Mein Versand läuft abschließend so
    sendto(socket, (char*)Tmp, size,0, (SOCKADDR*)&tSockAddr, sizeof(tSockAddr));
    

    sende ich dieses Packet nun an den Empfänger wird in Wireshark für dieses Paket aber z.B. anstatt einer 0 die 58606 ausgegeben.

    erhalte ich von der Gegenstelle Pakete zur und erzeuge aus den ersten beiden Bytes wieder eine 16bit Zahl

    unsigned short seqno = (Buf[0] << 8) | Buf[1];
    

    Klappt das einwandfrei. Von der Gegenstelle kommt, wie auch unter Wireshark angezeigt, die 00001 zurück und diese wird mir auch angezeigt.

    Was mache ich bei meiner Rechnung falsch?



  • a) Dir ist kla, dass auch folgender Code möglich ist:

    unsigned short zahl = 15;
    sendto(socket,(char*)&zahl,sizeof(short),...);
    

    Und ansonstigen ist in den 4 Zeilen kein Fehler erkennbar - bräuchten also mehr Code.


  • Mod

    @Verim: Solange die Byte-Order auf beiden Maschinen gleich ist, geht das!


Log in to reply