[C#] - ushort zu byte?

Cenk

Grünschnabel
Hi @All,

eine kleine Frage, mit der Bitte um schnelle Antwort:)

In c# gibt es ja auch ushort ulong und und und
ich möchte einen Server ansprechen der einen 16Byte großen Haeder von mir verlangt.

ich habe im client dies als Haeder mal gebastelt:

public struct Haeder
{
    public ushort MsgLenght; //2Byte
    public ushort MsgClass; //2Byte
    public ushort MsgType; //2Byte
    public ushort MsgSign; //2Byte
    public ulong SubType; //4Byte
    public ushort MsgUsr1; //2Byte
    public ushort MsgUsr2; //2Byte gibt insgesamt 16Byte
};

diesen Haeder möchte ich jetzt vor ab an den server schicken.
Der Server erwartet den Haeder in Byteform

normalerweise sende ich mit
  Byte[] sendBytes = Encoding.ASCII.GetBytes(WAWImessage.magicnumber);
  this.clientSockStream.Write(sendBytes, 0, sendBytes.Length);

aber irgendwie habe ich es nicht hinbekommen, in einem Stream den Haeder in Byteform zu transferieren.

Wenn mir nicht bald jemand hilft, verliere ich bestimmt nochmals etliche Haare.
Danke im vorab

Viele Grüße
Euer Bülent
 

Alexander Schuc

crazy-weasel
Hallo,

ich kann leider gerade nicht an meine "C#-Coding-Station",
aber probier doch mal folgendes:

Code:
public class SendHeader(Stream s, Header h)
{
    BinaryWriter bwriter = new BinaryWriter(s);

    bwriter.Write(h.MsgLength);
    bwriter.Write(h.MsgClass);
    bwriter.Write(h.MsgType);
    bwriter.Write(h.MsgSign);
    bwriter.Write(h.SubType);
    bwriter.Write(h.MsgUsr1);
    bwriter.Write(h.MsgUsr2);
    bwriter.Flush();
}

Übrigens, ulong hat 8 Bytes, uint hätte nur 4.
Ich erwähne dies, weil du bei deinem Header-Struct mit 4 Bytes gekennzeichnet hast.

Ich hoffe dieses Code-Snippet hilft.

Mfg,
Alex
 

Cenk

Grünschnabel
Vielen Dank

Bingo, genau das wars was ich gebraucht habe, VIELEN DANK.

P.S.: Du hast rech mit ulong und uint, habe es abgeändert :)