C LinuxでRAWソケットを使用してイーサネットパケットを送信しようとしています。私は構造体を作成したmain
で構造体をCの文字配列に変換するにはどうすればよいですか?
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;
:私は私のコードでstruct
定義を以下している
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 to this sendbuf ether_headerの後にできるように使用して完全なパケットを送信します。私のコードで他の
sendto(sockfd, sendbuf, txLen, 0, (struct sockaddr*)&socket_address, sizeof(struct sockaddr_ll));
すべてが働いている、私は1つでsendbuf
1に情報を追加することによって、他の方法を試してみましたが、それが正常に動作し、私のマシンがあまりにも他の側にパケットを受信します。私はちょうどそれがより多くのコマンドと構造体の各コマンドのために一番うまく動作するので、より汎用的にしたい。ありがとう。
あなたが共有されているリンクは、Google検索に送信して、あなたは、この情報の使用方法は指定されていません。頼むのではなく、この情報を指定してください。 –