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