我想做一个简单的while循环来连接到具有异常处理功能的echo服务器,但是我不知道为什么尝试看起来要执行一次,尽管它在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)
答案 0 :(得分:1)
由于'break'语句而退出,因为它在第一次执行后离开了while循环。我认为您可能想使用'continue',以便循环退出当前迭代并继续进行下一个迭代。