Python 3.x Python3套接字异常处理

Python 3.x Python3套接字异常处理,python-3.x,Python 3.x,我想做一个简单的while循环,通过异常处理连接到echo服务器,但我不知道为什么try似乎只执行一次事件,尽管它在while循环中 代码如下: if len(argv) ==3: ip=argv[1] port=int(argv[2]) print("Server: ",ip," on port ",port) else: ip=input("IP: ") port=int(input("Port: ")) while True: try:

我想做一个简单的while循环,通过异常处理连接到echo服务器,但我不知道为什么try似乎只执行一次事件,尽管它在while循环中 代码如下:

if len(argv) ==3:
    ip=argv[1]
    port=int(argv[2])
    print("Server: ",ip," on port ",port)
else:
    ip=input("IP: ")
    port=int(input("Port: "))

while True:
    try:
        client_socket.connect((ip, port))
        break
    except sk.error:
        print("connection error")
        choice=input("[r]etry, [c]hange server details, [q]uit ?")
        if choice == "c":
            ip=input("IP: ")
            port=int(input("Port: "))
如果用户输入c,我会提示他输入新的值,然后返回尝试连接到服务器

更新: 即使连接成功,删除中断也不会使循环无限循环

正确的ip为:192.168.0.100,端口为:9090

[user@User-MacBook-Pro Python]$python3 echo_client4.py
IP: 192.168.0.100
Port: 9090
connection error
[r]etry, [c]hange server details, [q]uit ? 

[root@centos_school Python]# python3 echo_server3.py 9090
Server listener on port  9090
Accept client request from:  ('192.168.0.149', 51839)

它由于'break'语句而退出,因为它在第一次执行后离开while循环。我认为您可能希望使用“continue”,这样循环将退出当前迭代并继续下一个迭代。

如果在
try:
中放置
中断
,请将其删除。