私はcでraw ethernetプログラミングを行っています。私は2つのファイルをクライアントとローカルホスト上で実行されているサーバーがあります。 socket()で通信するために私自身のプロトコル番号を使用しています。クライアント側ではローカルEthernet上の未加工イーサネットPF_PACKET問題
私はコード
s = socket(PF_PACKET, SOCK_RAW, 61187);
unsigned char dest_mac[6]= {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
struct sockaddr_ll socket_address;
socket_address.sll_family = PF_PACKET;
socket_address.sll_protocol = 61187;
socket_address.sll_ifindex = ifindex;
socket_address.sll_hatype = ARPHRD_ETHER;
socket_address.sll_pkttype = PACKET_BROADCAST;
socket_address.sll_halen = ETH_ALEN;
socket_address.sll_addr[0] = dest_mac[0];
socket_address.sll_addr[1] = dest_mac[1];
socket_address.sll_addr[2] = dest_mac[2];
socket_address.sll_addr[3] = dest_mac[3];
socket_address.sll_addr[4] = dest_mac[4];
socket_address.sll_addr[5] = dest_mac[5];
socket_address.sll_addr[6] = 0x00;
socket_address.sll_addr[7] = 0x00;
をfollwingしているし、私はいくつかのデータを送信し、サーバ側で
sent = sendto(s, buffer, ETH_HEADER_LEN, 0, (struct sockaddr*)&socket_address, sizeof(socket_address));
を次のように私は、クライアントのようにソケットの作成を行うと、私はのrecvfromをしています次のように:
length = recvfrom(s, buffer, BUF_SIZE, 0, NULL, NULL);
しかし、私はサーバー側で任意のパケットを受け取りません。誰でも私に問題の内容を教えてもらえますか?