C ++では、recvfromを使用して受信したUDPパケットの受信者アドレス
を取得するにはどうすればよいですか。パケットを受信しているのと同じホストである必要があることはわかっていますが、何かを確認するために、受信したパケットからそれを抽出する必要があります。これどうやってするの?
これを行う1つの方法は次のとおりです。
int r = getsockopt(receiver_sock, SOL_IP, SO_ORIGINAL_DST, (struct sockaddr *) &sender_addr, (socklen_t *)&addr_len);`
しかし、エラーが発生します:
error: ‘SO_ORIGINAL_DST’ was not declared in this scope
適切なヘッダーを使用しています
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include </usr/src/linux-headers-2.6.32-21/include/linux/netfilter_ipv4.h>
#include <arpa/inet.h>
#include <linux/netfilter.h>
netfilter_ipv4を使用すると、INT_MINが宣言されていないなどの他のエラーが発生します。ただし、間違いは適切なヘッダーを含めることよりも根本的なことだと思います。
助けてください。