当前位置:问百书>百科知识>如何获取当前IP地址

如何获取当前IP地址

2023-04-06 01:20:09 编辑:join 浏览量:607

如何获取当前IP地址

方向有点不对。获取本机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欺骗的技术,这有点扯远了)。不知道我说请不清楚。

标签:IP地址,获取,当前

版权声明:文章由 问百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.wenbaishu.com/article/84726.html
热门文章
二维码