gpt4 book ai didi

python - 在事先不知道的情况下检测Python socket.socket 实例是服务器还是客户端?

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:35 25 4
gpt4 key购买 nike

有没有办法检测传递给已建立连接的函数的 socket.socket 实例是否是服务器端套接字(执行 socket.accept() code>)或者是客户端套接字(执行socket.connect()

基本上,我正在寻找一些东西来检查套接字以实现下面使用的is_server_socket:

def func(sock):
if is_server_socket(sock):
print("I'm a server!")
else:
print("I'm a client!")

最佳答案

已连接的套接字有一个对等点,而未连接的套接字则没有对等点。因此您可以使用getpeername区分已连接和未连接的套接字。

请注意,并非每个未连接的套接字都是服务器套接字。它可能只是一个尚未连接的套接字(即创建了套接字但未调用连接)。但是,如果您只需要区分可以调用accept的套接字和作为accept结果获得的套接字,那么 getpeername 就足够了。不过,最好将此信息保存在局部变量中,而不是一直调用 getpeername,因为这是一个系统调用,因此成本相对较高。

关于python - 在事先不知道的情况下检测Python socket.socket 实例是服务器还是客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com