爱问知识人 爱问教育 医院库

如何获取当前IP地址。怎么办?

首页

如何获取当前IP地址。怎么办?


        

提交回答

全部答案

    2018-08-27 01:17:29
  •   方向有点不对。
    获取本机IP地址,一般是不通过socket这个途径,当然这个途径可以获得地址,但一般不会这么做。你可以查下getsockbyname这个函数。
    至于这里为啥会显示0。0。0。0,可能是你在SOCKET理解上有点出入。
      
    my_addr。sin_addr。s_addr在不一样的情形有不一样的含义,假如是TCP监听套接口,则它的含义是比较的标准,而不是本机的IP。
    例如你的机器,它有多个地址,首先127。0。0。1是它的回路地址,本机可以通过127。
      0。0。1来访问自己。其次他可能有一个内部局域网地址,例如说是192。168。1。5,局域网络(互联网)上机器都可以通过这个地址访问你的机器。还有可能你的机器有一个外网地址,例如202。101。56。3,internet上的机器都可以通过这个地址访问你的机器。
      
    接下来说下my_addr。sin_addr。s_addr的含义:
    假如你创建了TCP监听套接口,并且你执行的是 my_addr。sin_addr。s_addr赋值为127。0。0。1,意思就是仅有目的地址为127。
      0。0。1的包才会被监听套接口获取,这就是一种后果,由于127。0。0。1是回路地址,根本就不会出网卡,假如其它机器输入127。0。0。1最后会被送回自己本机,包根本就不会到达你的机器,也就是这种接口只可以接受自己本地的包。假如内网的机器发送包目的地址是你的局域网地址192。
      168。1。5,并且端口也是你这个套接口监听的端口,可惜的是这个端口只收目的地址是127。0。0。1的包,192。168。1。5的包会被丢弃。这种接口最终结果就是只收本机的包。
    假如绑定的是192。168。1。5的地址,则任何目的地址是192。
      168。1。5的包都会被接受(当然端口必须是一致)。这种只可以局域网络(互联网)上的机器包会被你的端口收到,外网则不成,原因很容易,外网的192。168。1。5的包是不可能通过路由到达你的机器。
    假如是你的外网地址,则同理任何外网地址到达的包都会被收到。
      
    假如是INADDR_ANY,则意思就是不管目的地址是啥,都会被你接受。可能有点不可思议,但放心,路由器不会让啥地址的包都会到达你的主机的。
    总之就是这个是监听的标准,而不是你的IP,你甚至可以把它设置成他人的IP地址,但可惜的是他人的IP地址的包,路由器是不会转发给你的,因此你啥都不会收到。
      (至少在当今以太网作为局域网的天下你是收不到的,路由器不转发。不知道令牌环网或其它的局域网会怎样,当然即使是以太网也可以用ip欺骗的技术,这有点扯远了)。
    不知道我说请不清楚。

    陈***

    2018-08-27 01:17:29

类似问题

换一换
  • 互联网 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):