SOCK_RAW
ソケットを介して別のコンピューターのプロセスと通信するためのコードを書いています。
他のマシンの IP アドレスを知っています。
一度に1バイトずつ値を埋めるsockaddr_ll.sll_addr
と問題が解決することを認識しています。つまり、次のようなものです。
socket_address.sll_addr[0] = 0x00;
socket_address.sll_addr[1] = 0x04;
socket_address.sll_addr[2] = 0x75;
socket_address.sll_addr[3] = 0xC8;
socket_address.sll_addr[4] = 0x28;
socket_address.sll_addr[5] = 0xE5;
しかし、他のマシンの16進数アドレスを持つ6バイトの文字配列がある場合、同じことを行う方法がわかりません。
を使用して ':' 形式で 16 進アドレスを出力できます
printf("%.2x",*ptr++ & 0xff);
ここptr
で、文字配列への配列です。
sll_addr
しかし、これらの値を使用してバイトを埋める方法は?