Linux:如何将udp数据包发送到无法访问的IP地址

时间:2014-01-24 10:02:44

标签: c++ linux sockets udp broadcast

我的程序(c ++套接字)从另一个网络接收广播udp数据报,但我的程序无法向此地址发送udp回复,因为“sendto”方法引发了“网络无法访问”错误。 在回复时需要忽略网络掩码。

是否有任何套接字标志可以解决此问题?

P.S。 我有简单的设备可以正常工作。

要将数据包发送到任何网络,您应该使用自己的IP地址设置默认网关。 我的方法:

int32_t setNewIp(uint8_t A_, uint8_t B_, uint8_t C_, uint8_t D_) {
    uint8_t ip_cmd[60];
    snprintf((char*) ip_cmd, sizeof (ip_cmd), "ifconfig eth0 inet %hhu.%hhu.%hhu.%hhu", A_, B_, C_, D_);
    int32_t res = system((char*) ip_cmd);
    if (res != 0) goto exit;

    snprintf((char*) ip_cmd, sizeof (ip_cmd), "route add default gw %hhu.%hhu.%hhu.%hhu", A_, B_, C_, D_);
    res = system((char*) ip_cmd);

exit:
    return res == 0 ? OK : SYSTEM_ERR;
}

0 个答案:

没有答案