使用UDP的connect获取本机IP

博客介绍了在多网卡环境下,通过UDP的connect方法来精确获取用于对外通信的本机IP,此方法能够避免主机名为空或使用网卡信息时的不确定性问题。源码示例展示了UDP connect如何根据静态路由表设置源IP和源端口。
摘要由CSDN通过智能技术生成

常见获取IP主要有几种方式:

1. 使用主机名获取本机IP,但是当主机名为空时,获取IP会失败。

2. 使用网卡信息获取本机IP

但是这几种方式在多网卡时候无法确定出口的IP,在<UNP> 8.14中介绍了使用UDP connect来确定外出接口。

源码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>

void get_local_ip ()
{
    int fd = socket (AF_INET, SOCK_DGRAM, 0); 
    int ret;
    socklen_t len = sizeof (struct sockaddr);
    struct sockaddr_in saddr;
    struct sockaddr_in name;

    if (fd == -1) {
        printf ("Socket create fail.\n");
        return;
    }   

  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值