当前位置:  技术问答>linux和unix

如何获得本地机器IP问题?

    来源: 互联网  发布时间:2016-04-06

    本文导语:  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include   #include  #include  #include  #include  #include  #include  #include  #include using namespace std; int get_host_info(string &local_ip,string &local_m...

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include  
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
using namespace std;
int get_host_info(string &local_ip,string &local_mask)
{
struct sockaddr_in *my_ip;
struct sockaddr_in *addr;
struct sockaddr_in myip;
my_ip = &myip;
struct ifreq ifr;
int sock;
if((sock = socket(AF_INET, SOCK_DGRAM, 0)) sin_addr = ((struct sockaddr_in *)(&ifr.ifr_addr))->sin_addr;
local_ip = inet_ntoa(my_ip->sin_addr);

//取本机掩码
if( ioctl( sock, SIOCGIFNETMASK, &ifr) == -1 ){
   perror("[-] ioctl");
   return -1;
}
addr = (struct sockaddr_in *) & (ifr.ifr_addr);
local_mask = inet_ntoa( addr->sin_addr);
close(sock);
return 0;
}


void main()
{
string local_ip, string local_mask;
  int ret =get_host_info(local_ip,local_mask)
printf("ip = %sn",local_ip);
printf("ip mask = %sn",local_mask);
   
while(1)pause();


}
 


gdbtest.c:12:18: string: 没有那个文件或目录
gdbtest.c:20: parse error before "namespace"
gdbtest.c:20: warning: data definition has no type or storage class
gdbtest.c:21: parse error before '&' token
gdbtest.c:21: parse error before '&' token
gdbtest.c: In function `get_host_info':
gdbtest.c:29: parse error before "sin_addr"
gdbtest.c:38: `local_ip' undeclared (first use in this function)
gdbtest.c:38: (Each undeclared identifier is reported only once
gdbtest.c:38: for each function it appears in.)
gdbtest.c:38: `local_mask' undeclared (first use in this function)
gdbtest.c: In function `main':
gdbtest.c:46: `string' undeclared (first use in this function)
gdbtest.c:46: parse error before "local_ip"
gdbtest.c:47: `local_ip' undeclared (first use in this function)
gdbtest.c:47: `local_mask' undeclared (first use in this function)
gdbtest.c:48: parse error before "printf"
 

|
套接字在创建了连接后,可以调用以下函数获取套接字双方的协议地址信息,其原型如下:
int getsockname(int s, struct sockaddr *name, int *namelen);
函数getsockname获取套接字描述符s在本地主机命名的协议地址信息,指针name指定了存取该地址信息的缓冲区,参数namelen指定了该缓冲区可容纳的最大字节大小,并回传实际写入缓冲区的信息长度。
比如:
int LocateNativeAddr(int nSock, char *pAddr)
{
struct sockaddr_in addrin;
int lSize;
ASSERT(nSock > 0 && pAddr != NULL);
memset(&addrin, 0, sizeof(addrin));
lSize = sizeof(addrin);
ASSERT(getsockname(nSock, (struct sockaddr*)&addrin, &lSize) >= 0); /* 获取本地主机套接字协议地址信息 */
strcpy(pAddr, (char *)inet_ntoa(addrin.sin_addr)); /* 转换套接字地址信息为以点分隔的字符串形式 */
return 0;
}
返回的是xx.xx.xx.xx格式的IP地址

|
#include  没有这个文件或目录 
using namespace std; using parse issue

    
 
 

您可能感兴趣的文章:

  • Linux下局域网内如何根据对方机器的IP地址获得对方机器网卡的MAC地址?
  • Linux怎么获得局域网终其他windows机器的时间?
  • Java中如何获得本地的机器名?(新手上路)
  • redhat9.0怎样查看机器从DHCP获得的IP地址啊?
  • 如何获得机器上已经注册的所有ODBC数据源?
  • 如何获得远端机器的mac地址
  • 一个问题:我如何获得自己机器的IP地址???
  • gtk的获得属性的问题!急!
  • 菜鸟问题--如何获得系统的当前日期??
  • 菜鸟问题--关于命令参数的获得 高分!
  • ###########十万火急!openldap的问题,如何获得一种条目值?
  • 在线等待,甚急,马上给分,一个获得线程ID的问题
  • 小问题 ,怎样获得 主键
  • C# TreeView控件右键菜单获得当前节点的问题
  • 简单问题:如何获得当前的URL?
  • 获得UNIX操作系统问题
  • 权限获得问题
  • 请教 一个shell问题 如何通过shell获得一个日志文件中的增量部分
  • 从tablemodel里面检测到jtable一格的数据有问题如何让该格获得焦点继续编辑?
  • 关于用串口获得控制台登陆linux的问题
  • 绝对菜鸟问题!轻松获得40技术分哦!
  • 初级问题——获得文本框的数据
  • linux socket问题。。怎样获得已帮定特定port的一个套接字socket
  • 初学者关于类的问题,50分轻松获得。
  • 关于motif中获得用户输入的一个问题!
  • 高手,一个好象CSDN还没人能解决的问题!如何获得java对象在内存中的大小???100分相谢!
  • 关于获得系统时间函数的问题,大侠帮忙!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用sysconf(_SC_CLK_TCK)可以获得时钟的hz,还有什么方法可以获得内核时钟的hz
  • 调用DOM对象的focus使文本框获得焦点
  • 获得客户端的显示分辨率
  • 怎样一个一个的获得指定目录下的文件名.
  • linux下什么语言获得参数是~1
  • 求救:关于在BSD下如何通过文件路径使用核内函数获得文件句柄?
  • jQuery获得内容和属性示例代码
  • jQuery获得内容与属性方法
  • mysql获得60天前unix时间思路及代码
  • 用javamail怎么获得邮件内容?
  • 如何获得上一组件的的位置信息?
  • 请问怎样获得当前所在目录和清屏?
  • 在JavaBean或Servlet如何获得URL地址?
  • 如何获得系统支持字体?
  • 按钮如何获得焦点并按回车触发?
  • 如何在UNIX下获得MAC地址?
  • 如何获得刚插入数据的id递增值
  • 如何获得iptables的输出信息??????有挑战性阿!!!
  • 我的redhat 可以自动获得Ip地址 却无法浏览网页 !
  • 获得usb设备的Serial Number


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3