【发布时间】:2016-12-26 21:49:39
【问题描述】:
有没有办法检测传递给已经建立连接的函数的socket.socket实例是服务器端套接字(执行socket.accept())还是客户端套接字(执行socket.connect()。
基本上我正在寻找一些东西来检查套接字以实现下面使用的is_server_socket:
def func(sock):
if is_server_socket(sock):
print("I'm a server!")
else:
print("I'm a client!")
【问题讨论】:
-
如果您使用的是 UDP,则没有服务器或客户端套接字的概念。如果您使用 TCP,您可能应该检查代码的逻辑,因为拥有一个接受服务器或客户端套接字但区分两者的函数几乎没有意义。
-
@ValentinLorentz 这只是 TCP。我正在创建的接口使用类似于 HTTP/2 的“流 ID”,并且为了避免流 ID 重叠,强制客户端或服务器实例为奇数或偶数流 ID。我的接口对外部代码一无所知,只知道传递给它的套接字。请不要质疑我的问题。相反,如果有答案,请集中精力寻找答案。