常见获取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;
}