【问题标题】:How do I check if I connected to the server? Python Sockets如何检查我是否连接到服务器? Python 套接字
【发布时间】:2021-10-30 11:16:43
【问题描述】:

我还没有测试过,但是如果不执行连接,会打印最后一句吗?

def connect_to():
    print(f"[*] Connecting to {receiver_ip}:{receiver_port}")
    socket.connect((receiver_ip, receiver_port))
    print(f"[+] Connected")

如何检查我是否正确连接并做出正确的 if 语句?

【问题讨论】:

  • 不,它不会被打印出来。使用 try 和 except 块

标签: python python-3.x sockets networking network-programming


【解决方案1】:

当一个套接字连接失败时,它会抛出一个socket.error 异常。您可以在 Python 中使用 error handling techniques 捕获该特定错误。

import socket


def connect(ip, port):
    s = socket.socket()

    try:
        print(f"Connecting to {ip}:{port}")
        s.connect((ip, port))
    except socket.error as msg:
        print(f"Failed to connect: {msg}")
    else:
        print(f"Successfully connected to {ip}:{port}")

如何检查我是否正确连接并做出正确的 if 语句?

如果在 try 块中捕获到指定的错误,则将执行 except 块。另一方面,else 块将在没有引发或处理错误时执行。您可以将except 块视为“如果错误”,将else 块视为“如果不是错误”。

或者,您可以捕获错误并使用您的自定义消息重新提出它。

import socket


def connect(ip, port):
    s = socket.socket()

    try:
        print(f"Connecting to {ip}:{port}")
        s.connect((ip, port))
    except socket.error as msg:
        raise socket.error(f"Failed to connect: {msg}")

    print(f"Successfully connected to {ip}:{port}")

通过追赶和重新加注,您不必再使用else 块。

【讨论】:

    【解决方案2】:

    使用 try except 来捕获错误以及连接是否成功

    【讨论】:

    • 我需要捕获一些connect()函数返回的异常吗?
    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2017-05-06
    • 2014-07-11
    • 2018-06-10
    • 2015-04-23
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2018-08-01
    • 2022-01-12
    相关资源
    最近更新 更多