相关疑难解决方法(0)

如何在Linux中以编程方式检测IP地址更改?

有没有办法使用C++以编程方式检测Linux中本地计算机上的IP地址更改?

c++ linux

26
推荐指数
2
解决办法
2万
查看次数

如何从C程序输出主机的IP地址?

我需要使用C语言显示本地计算机的所有IP地址.如何才能做到这一点?

c sockets linux ip

15
推荐指数
4
解决办法
4万
查看次数

如何在C中获取我的非环回网络IP地址?

对于两台主机之间的通信,我需要将主机的IP地址发送到另一个站点.问题是,如果我请求我的IP地址,可能是我恢复了我的本地环回IP地址(127.xxx),而不是网络(以太网)IP地址.

我使用以下代码:

char myhostname[32];


gethostname(myhostname, 32);
hp = gethostbyname(myhostname);
unsigned my_ip = *(unsigned*)(hp->h_addr);

if( (my_ip % 256) == 127) {
  /* Wrong IP adress as it's 127.x.x.x */
  printf("Error, local IP address!");
  return;
}
Run Code Online (Sandbox Code Playgroud)

解决它的唯一方法是确保/ etc/hosts中的主机名在真实网络地址后面,而不是本地环回(例如Ubuntu的默认值).

有没有办法解决这个问题而不依赖于/ etc/hosts的内容?

编辑:我改变了上面的代码,所以它使用getaddrinfo,但我仍然得到回送设备的号码(127.0,0,1)而不是真正的IP地址:

struct addrinfo hint = {0};
struct addrinfo *aip = NULL;
unsigned ip = 0;
struct sockaddr_in *sinp = NULL;

hint.ai_family = AF_INET; /* IPv4 */
hint.ai_socktype = SOCK_STREAM;

if(getaddrinfo(hostname, NULL, &hint, &aip) != 0) {
    return 0;
}
sinp = …
Run Code Online (Sandbox Code Playgroud)

c networking network-programming communication

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×2

linux ×2

c++ ×1

communication ×1

ip ×1

network-programming ×1

networking ×1

sockets ×1