我的程序(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;
}