Python指定IP格式作为输入

0 投票
1 回答
4664 浏览
提问于 2025-04-17 19:45

我正在写一个简单的客户端和服务器,想要加入一些简单的边界检查,以确保用户输入的IP地址格式是正确的,也就是像这样(int.int.int.int)。有没有人能给我一些建议,怎么才能做到这一点?目前我的代码只是接受这个值,如果不合法就会抛出操作系统错误。但我想要在这里阻止用户输入任何内容。

 def ipEntered():
          global ipEntered
          ipEntered = input("Please enter the ip address of the server you wish to connect with:")

谢谢

1 个回答

2

使用ipaddress模块(这个模块在Python 3.3中引入):

import ipaddress

def ipEntered():
    while True:
        try:
            val = input("Please enter the ip address of the server you wish to connect with:")
            return ipaddress.ip_address(val)
        except ValueError:
            print("Not a valid IP address")

这个模块可以接受IPv4地址,格式是像"100.200.30.40"这样的四段数字,通常叫做点分十进制。同时,它也能处理IPv6地址,这种地址有两种写法:一种是长格式(由8组4个十六进制字符组成,中间用:分隔),另一种是短格式。

如果你只想接受IPv4地址,可以使用return ipaddress.IPv4Address(val)来实现。

撰写回答