将C转换为C#

将C转换为C#,c#,c,struct,unions,C#,C,Struct,Unions,我正在尝试将这个C代码转换为C,是否有一个C等同于C联合类型定义 struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; typedef struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_u

我正在尝试将这个C代码转换为C,是否有一个C等同于C联合类型定义

struct sockaddr_in {
    short   sin_family;
    u_short sin_port;
    struct  in_addr sin_addr;
    char    sin_zero[8];
};

typedef struct in_addr {
  union {
    struct {
      u_char s_b1,s_b2,s_b3,s_b4;
    } S_un_b;
    struct {
      u_short s_w1,s_w2;
    } S_un_w;
    u_long S_addr;
  } S_un;
 } IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;

谢谢。

您可以查看。这就是说,在.NET中,您有一些类可以让您直接使用Socket和TCP/IP,例如Socket、TcpListener、TcpClient,并且您不需要盲目地翻译C代码。

您可以查看以下内容。这就是说,在.NET中,有一些类允许您直接使用Socket和TCP/IP,例如Socket、TcpListener、,TcpClient,您不需要盲目地翻译C代码。

虽然其他人肯定有一个观点-这可能是您真正不需要做的事情-有一种方法可以用C模拟联合(模拟联合的示例)

但不要这样做。这个C联合的目的似乎是允许对4字节长的数据进行位旋转。以这种方式使用联合依赖于目标体系结构的字节顺序知识,这是C#无法保证的

在C#-或任何其他关注可移植性的语言中-如果您想要获取或设置高字节/低字节/等,您需要使用显式位移位,如前所述


但是也不要那样做。照别人说的做,不要移植这个代码。有人已经为您完成了这项工作,很可能是Microsoft的内置库;)

虽然其他人肯定有一个观点-这可能是你真的不需要做的事情-但是有一种方法可以用C#using(模拟联合的示例)模拟联合

但不要这样做。这个C联合的目的似乎是允许对4字节长的数据进行位旋转。以这种方式使用联合依赖于目标体系结构的字节顺序知识,这是C#无法保证的

在C#-或任何其他关注可移植性的语言中-如果您想要获取或设置高字节/低字节/等,您需要使用显式位移位,如前所述


但是也不要那样做。照别人说的做,不要移植这个代码。有人已经为您完成了这项工作,很可能是Microsoft的内置库;)

此代码似乎用于TCP/IP处理代码。C#有自己的TCP/IP处理,因此您不需要这样做。除非你想做一些非常低级的事情,否则C#不是你最好的选择。代码的具体用途是什么?不,C#中没有并集的等价项。此代码似乎用于TCP/IP处理代码。C#有自己的TCP/IP处理,因此您不需要这样做。除非你想做一些非常低级的事情,否则C#不是你最好的选择。代码的具体用途是什么?不,C#中没有并集的等价物。