いくつかの異なる IP アドレスを持つサーバーがあります。この時点で、各 IP は UDP 要求を受信できますが、応答するのは常に同じ IP であり、要求者はこれを好みません。
簡単に言うと、これがすべての重要なコードです。
int sock;
socklen_t clilen;
struct sockaddr_in serv_addr, cli_addr;
memset((char*)&serv_addr, 0, sizeof(serv_addr));
sock = socket(AF_INET, SOCK_DGRAM, 0);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(PORT);
...
recvfrom(sock, buffer, BUFLEN, 0, (struct sockaddr *)&cli_addr, &clilen);
...
sendto(sock, resData, resLen, 0, (struct sockaddr *)&cli_addr, sizeof(cli_addr));
どの IP を使用してパケットを送り返すかを何らかの方法で指定できるようにしたいと考えています (これは、リクエストごとに異なる可能性があります) が、ソケットを使用してこれを達成する方法と方法がわかりません。私はこの分野での経験があまりないので、私が得ることができるすべての助けは大歓迎です.
以下を編集
ここで受け入れられた回答で潜在的な解決策を見つけました: Linuxでudpソケットを再バインドする方法
ただし、新たな問題が発生します。どの IP/インターフェースがリクエストを受信したかを知るにはどうすればよいですか? そのIP /インターフェースを使用して応答できるようにします。