Tôi có một struct ++ C dưới đây:Chuyển đổi C++ struct C#
struct CUSTOM_DATA {
int id;
u_short port;
unsigned long ip;
} custom_data;
Làm thế nào tôi có thể chuyển nó sang C# struct, serialize nó và gửi thông qua ổ cắm tcp?
Cảm ơn!
UPD
Vì vậy, mã C# sẽ là?
[StructLayout(LayoutKind.Sequential)]
public struct CustomData
{
public int id;
public ushort port;
public uint ip;
}
public void Send()
{
CustomData d = new CustomData();
d.id = 12;
d.port = 1000;
d.ip = BitConverter.ToUInt32(IPAddress.Any.GetAddressBytes(), 0);
IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(d));
Marshal.StructureToPtr(d, pointer, false);
byte[] data_to_send = new byte[Marshal.SizeOf(d)];
Marshal.Copy(pointer, data_to_send, 0, data_to_send.Length);
client.GetStream().Write(data_to_send, 0, data_to_send.Length);
}
Cám ơn câu trả lời của bạn, bạn có thể giúp tôi, là tất cả ok với mã của tôi về việc sao chép để đệm và gửi nó? – Becker
@Becker Bạn nên sử dụng StructureToPtr, không phải GetComInterfaceForObject. Xem: http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.structuretoptr.aspx#Y1000 –
Cảm ơn! Xin lỗi, tôi chưa bao giờ làm những việc như thế này trước đây. Tôi chỉnh sửa mã của tôi, bây giờ tất cả ok? – Becker