我想在C Linux中使用RAW套接字发送以太网数据包。我在我的代码如下struct
定义:如何将结构转换为C中的char数组?
typedef struct vlink_header_s
{
uint8_t verCmd;
uint8_t reverseVerCmd;
}vlink_header_t;
typedef struct vlink_reg_rd_s
{
vlink_header_t header;
uint32_t address;
uint16_t length;
}vlink_reg_rd_t;
在main
我创建了一个结构:
vlink_reg_rd_t g_pkt;
g_pkt.header.verCmd = 0x10|VLINK_CMD_REG_RD;
g_pkt.header.reverseVerCmd = ~(g_pkt.header.verCmd);
g_pkt.address = 0x0007 .....
和消息:
char sendbuf[1024];
struct ether_header *eh = (struct ether_header *) sendbuf;
如何添加的所有信息从结构g_pkt到这个sendbuf after ether_header所以我可以利用发送完整的数据包:
sendto(sockfd, sendbuf, txLen, 0, (struct sockaddr*)&socket_address, sizeof(struct sockaddr_ll));
一切都在我的代码别的工作,我尝试过其他方法通过增加信息,以sendbuf
一个接一个,它工作正常,我的机器接收数据包的另一边了。我只是想让它更通用,因为每个命令都有一堆命令和结构,效果最好。谢谢。
您共享的链接发送给谷歌搜索,你是没有指定如何使用这些信息。请指定此信息而不是要求。 –