请大家看看我转换的对不对,c++开发人员说转换有错。typedef struct _sockaddr_my
{
short sin_family; //地址家族,AF_xxx
u_short sin_port; //端口号
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; //IP地址
char sin_zero[8];  
}sockaddr_my;
typedef struct NewDHCP_Info
{
char hostmac[20];
sockaddr_my ipchange; 
sockaddr_my submaskaddr;
sockaddr_my gatewayaddr;
sockaddr_my dnsaddr;
sockaddr_my dhcpaddr;
char domainame[128];
int Flag;
int messagetype;
unsigned char Devtype;
char strSN[256];
char strDescriptName[256];
char UserName[256];
char Password[256];
unsigned char cDhcpAble;
unsigned char sub_device_type;
}NEWDHCP_INFO;
typedef void (*fDeviceInfoCallBack)(NEWDHCP_INFO* dhcp_info);
ALKSDK_API int SetDeviceInfoCallBack(fDeviceInfoCallBack fun);
public struct sockaddr_my
  {
  public Int16 sin_family;
  public UInt16 sin_port;
  public class S_un_b
  {
  public UInt16 s_b1, s_b2, s_b3, s_b4;
  }
  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 8)]
  public string sin_zero;
  }  [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  public class NewDHCP_Info
  {
  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string strhostmac;  public sockaddr_my ipchange;
  public sockaddr_my submaskaddr;
  public sockaddr_my gatewayaddr;
  public sockaddr_my dnsaddr;
  public sockaddr_my dhcpaddr;  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
  public string domainame;  public int Flag;
  public int messagetype;
  public byte Devtype;
  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string strSN;
  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string strDescriptName;
  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string strUserName;
  [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string strPassword;   
  public byte cDhcpAble;
  public byte sub_device_type;
  }