C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何为套接字设置多个路由条目?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是静态路由的新手,我们的客户端要求为套接字实现静态路由.当我用Google搜索时,我遇到了rtentry来设置路由信息.当我打开这个结构时,我看到了静态路由的字段
struct sockaddr rt_dst;     /* Target address.  */
struct sockaddr rt_gateway;     /* Gateway addr (RTF_GATEWAY).  */
struct sockaddr rt_genmask;     /* Target network mask (Ip).  */

但是我如何在这里设置多个条目?
创建多个rtentry并调用ioctl(FileDes,SIOCADDRT和& rtentry)将解决我的问题?

int32_t FileDes = socket(PF_INET,SOCK_DGRAM,IPPROTO_Ip);
for(auto RtEntry : RtEntriesList)
{
   ioctl(FileDes,SIOCADDRT,RtEntry)`
}

如果我配置,我该如何测试?如果您可以提供链接以了解有关这些内容的更多信息,将会很有帮助.

解决方法

最后我得到了答案.
int32_t FileDes = socket(PF_INET,IPPROTO_Ip);

struct rtentry Route1;
struct rtentry Route2;
struct rtentry Route3;

// configure Route1
// configure Route2
// configure Route3

RtEntriesList.push_BACk(&Route1);
RtEntriesList.push_BACk(&Route2);
RtEntriesList.push_BACk(&Route3);

for(auto RtEntry : RtEntriesList)
{
   ioctl(FileDes,RtEntry);
}

将工作,我们可以创建多个路由条目并添加套接字FD.这将更新系统范围的路由表.

它类似于route add ..命令

为了测试我将网关设置为我的PC IP地址并在那里启动wireshark.设置路由配置后,给定的IP范围将路由到我的PC.感谢@osgx提供了实际设置系统范围路由表的信息.

大佬总结

以上是大佬教程为你收集整理的c – 如何为套接字设置多个路由条目?全部内容,希望文章能够帮你解决c – 如何为套接字设置多个路由条目?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。