gpt4 book ai didi

c - 将套接字绑定(bind)到网络接口(interface)

转载 作者:IT王子 更新时间:2023-10-29 00:22:44 24 4
gpt4 key购买 nike

如何将套接字绑定(bind)到特定的网络接口(interface)?我尝试在服务器端使用 setsockopt,但客户端仍然可以通过 eth0 和 lo 接口(interface)访问该服务。

我可以通过使用 serv_addr.sin_addr.s_addr 设置特定的 IP 地址来实现这一点。

但我怀疑我们可以仅使用 setsockopt(不提及 IP 地址)绑定(bind)到接口(interface)。

最佳答案

您可以通过设置 SO_BINDTODEVICE 套接字选项绑定(bind)到特定接口(interface)。

struct ifreq ifr;

memset(&ifr, 0, sizeof(ifr));
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "eth0");
if (setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr)) < 0) {
... error handling ...
}

警告:您必须是 root 用户并具有 CAP_NET_RAW 能力才能使用此选项。

第二种方法是您可以使用 getifaddrs() 解析绑定(bind)到接口(interface)的 IP 地址。 .

点击后一个链接以获得综合示例。

关于c - 将套接字绑定(bind)到网络接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com