0

私は単純なクライアントとサーバーを作成しており、ユーザーが入力した IP アドレスが正しい形式 (int.int.int.int) であることを確認するためにいくつかの単純な境界チェックを導入したいと考えています。私のコードは値を受け入れるだけで、無効な場合はOSエラーをスローします。しかし、ユーザーがここに何かを入力できないようにしたいです。

 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"ドット付きクワッドなど) と、長い形式 (4 つの 16 進文字を で区切った 8 つのグループ:) と省略形式の両方の IPv6 アドレスを受け入れます。

IPv4 アドレスのみを受け入れたい場合は、return ipaddress.IPv4Address(val)代わりに使用してください。

于 2013-03-20T15:29:56.733 に答える