检查 IP 地址是不是真实 - 获取 ValueError: invalid literal for int() with base 10: '192.168.0.105'

Posted

技术标签:

【中文标题】检查 IP 地址是不是真实 - 获取 ValueError: invalid literal for int() with base 10: \'192.168.0.105\'【英文标题】:Checking if IP address is real - Getting ValueError: invalid literal for int() with base 10: '192.168.0.105'检查 IP 地址是否真实 - 获取 ValueError: invalid literal for int() with base 10: '192.168.0.105' 【发布时间】:2018-08-31 11:51:57 【问题描述】:

我正在尝试为课堂项目创建一个聊天室(我难倒了我的老师,他允许我使用我可以使用的任何资源,包括询问某些老师不允许的 Stack Overflow)。在用户进入聊天室之前,我想确保他们想要的 IP 地址是有效的。我已经得到了我的一小段代码来检查这个站点的 IP 地址,它有点帮助。

Here's my code so far (sorry it's a link)

当我运行它并输入我自己的 IP 地址(只是为了让我知道它是一个实际的 IP 地址)时,我收到以下错误消息;

ValueError: int() 以 10 为底的无效文字:'192.168.0.105'

这只是我的代码的开始,我希望能很快解决它,因此非常感谢任何帮助!

【问题讨论】:

代码属于您的问题,而不是图片。 【参考方案1】:

问题在于您的用户输入行:

int('192.168.0.105')

会抛出错误,因为您无法将 IP 地址转换为整数,IP 地址不是整数。

函数socket.inet_aton() 采用:

点分四组字符串格式的 IPv4 地址(例如,“123.45.67.89”)

因此,只需删除对int 的转换,您的代码就应该可以工作了。

【讨论】:

【参考方案2】:

您不能键入包含导致错误的点的转换字符串。只需在input() 之前删除类型转换,即int()inet_aton() 在内部负责 ip 验证。

代码:

import socket
userip = input("enter ip addr")
try:
    socket.inet_aton(userip)
except socket.error:
    print("invalid ip")

【讨论】:

以上是关于检查 IP 地址是不是真实 - 获取 ValueError: invalid literal for int() with base 10: '192.168.0.105'的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取用户真实IP地址

转载JSP 获取真实IP地址的代码

Java 获取真实IP地址

急求,请教下各位,为啥用request.getRemoteAddr()获取的Ip都不是真实的

如何获取网站用户的真实IP

如何获取用户的真实IP