0

我正在编写一个简单的客户端和服务器,并想引入一些简单的边界检查以确保用户输入的 IP 地址格式正确,即(int.int.int.int),有没有人对此有任何建议可以在我的代码只接受该值的那一刻完成,如果它无效,将引发操作系统错误。但我想阻止用户在这里输入任何内容。

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

谢谢

4

1 回答 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",例如点分四边形,以及速记形式(8 组 4 个十六进制字符由 分隔:)和速记形式的 IPv6 地址。

如果您只想接受 IPv4 地址,请return ipaddress.IPv4Address(val)改用。

于 2013-03-20T15:29:56.733 回答