检查 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'的主要内容,如果未能解决你的问题,请参考以下文章