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

4年前 (2020-10-15)阅读343回复0
愁绪几多深
愁绪几多深
  • 管理员
  • 发消息
  • 注册排名182
  • 经验值245
  • 级别管理员
  • 主题49
  • 回复0
楼主

  方向有点不对。

获取本机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欺骗的技术,这有点扯远了)。

不知道我说请不清楚。

0
0
收藏0
回帖

如何获取当前IP地址。怎么办? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息