如果觉得这应该非常明显,但是我却在文档中找不到它:https://docs.python.org/3/library/socket.html
考虑这个
import socket
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
如何检查connect()
上是否已调用my_socket
。目前,我的代码在我的课程中设置了一个单独的布尔值,但是我认为应该可以向套接字对象询问。为了澄清起见,我正在编写客户端代码,我想在我的类中提供一些自省功能,以检查套接字是否已连接到服务器。
类似
my_socket.is_connected()
=> False
my_socket.connect(("127.0.0.1", 42))
=> None
my_socket.is_connected()
=> True
答案 0 :(得分:3)
尝试致电getpeername()
并处理由此产生的错误或未连接状态。
答案 1 :(得分:2)
如果要检测是否已调用connect
,可以像这样子集socket.socket
:
class Sock(socket.socket):
def connect(self, *args, **kwargs):
super().connect(*args, **kwargs)
print("tried to connect!")
然后使用Sock
就像使用socket.socket
一样:
my_socket = Sock(socket.AF_INET, socket.SOCK_STREAM)