Hi,
How to Convert Structure to byte array in C# ?
I have defined a structure like this :
public struct CIFSPacket
{
public uint protocolIdentifier;//the value must be "0xFF+'SMB'"
public byte command;
public byte errorClass;
public byte reserved;
public ushort error;
public byte flags;
//here there are 14 bytes of data which is used differently among different dialects.
//I do want the flags2 however so I'll try parsing them
public ushort flags2;
public ushort treeId;
public ushort processId;
public ushort userId;
public ushort multiplexId;
//trans request
public byte wordCount;//Count of parameter words defining the data portion of the packet.
//from here it might be undefined...
public int parametersStartIndex;
public ushort byteCount;//buffer length
public int bufferStartIndex;
public string Buffer;
}
In my main method i create a instance of it and assign values to it
CIFSPacket packet = new CIFSPacket();
packet.protocolIdentifier = 0xff;
packet.command = (byte)CommandTypes.SMB_COM_NEGOTIATE;
packet.errorClass = 0xff;
packet.error = 0;
packet.flags = 0x00;
packet.flags2 = 0x0001;
packet.multiplexId = 22;
packet.wordCount = 0;
packet.byteCount = 119;
packet.Buffer = "NT LM 0.12";
Now i want send this Packet by socket for that i need to convert Structute to byte array ..How i can do it ??
My full code is as follows :
static void Main(string[] args)
{
Socket MyPing = new Socket(AddressFamily.InterNetwork,
SocketType.Stream , ProtocolType.Unspecified ) ;
MyPing.Connect("172.24.18.240", 139);
//Fake an IP Address so I can send with SendTo
IPAddress IP = new IPAddress(new byte[] { 172,24,18,240 });
IPEndPoint IPEP = new IPEndPoint(IP, 139);
//Local IP for Receiving
IPEndPoint Local = new IPEndPoint(IPAddress.Any, 0);
EndPoint EP = (EndPoint)Local;
CIFSPacket packet = new CIFSPacket();
packet.protocolIdentifier = 0xff;
packet.command = (byte)CommandTypes.SMB_COM_NEGOTIATE;
packet.errorClass = 0xff;
packet.error = 0;
packet.flags = 0x00;
packet.flags2 = 0x0001;
packet.multiplexId = 22;
packet.wordCount = 0;
packet.byteCount = 119;
packet.Buffer = "NT LM 0.12";
MyPing.SendTo(It takes byte array as parameter);
}
Any code snippet pls