0
我正在編寫一個代碼,通過SOCK_RAW
套接字與另一臺計算機上的進程進行通信。套接字編程PF數據包套接字
我知道另一臺機器的IP地址。
我知道,在一個時間填補了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;
但我不知道該怎麼做同樣的事情時,我有字符數組6個字節具有另一臺機器的十六進制地址。
我能打印十六進制地址「:」使用
printf("%.2x",*ptr++ & 0xff);
其中ptr
是一個數組的字符數組格式。
但如何使用這些值來填充sll_addr
字節?
我很困惑,爲什麼你不能''socket_address.sll_addr [0] = ptr [0];'etc? – Wutz
你可能是對的。當發佈我的答案時,我不知何故忽略了提及*** 6 ***字節字符數組的OP,但默默地認爲源是一個字符串(這將是17 + 1字節)。 @Wutz – alk