我想在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
一個接一個,它工作正常,我的機器接收數據包的另一邊了。我只是想讓它更通用,因爲每個命令都有一堆命令和結構,效果最好。謝謝。
您共享的鏈接發送給谷歌搜索,你是沒有指定如何使用這些信息。請指定此信息而不是要求。 –