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.
-
@Verim: Solange die Byte-Order auf beiden Maschinen gleich ist, geht das!