すでに接続設定を持つ関数に渡されたsocket.socket
インスタンスは、サーバー側のソケット(socket.accept()
を実行した)があるかsocket.connect()
を実行し、クライアント側ソケット(あるかどうかを検出する方法はあります。Pythonのsocket.socketインスタンスが事前に知らなくても、サーバーかクライアントかを検出しますか?
基本的に私は」 is_server_socket
が以下で使用されている実装するためのソケットについてチェックするために何かを探してメートル:接続されていないソケットがピアを持たないながら
def func(sock):
if is_server_socket(sock):
print("I'm a server!")
else:
print("I'm a client!")
UDPを使用している場合、サーバーソケットまたはクライアントソケットの概念はありません。 TCPを使用している場合、おそらくコードのロジックをチェックする必要があります。なぜなら、サーバーソケットまたはクライアントソケットのいずれかを取りますが、その2つを区別する機能はほとんど意味がないからです。 –
@ValentinLorentz TCPだけです。私が作成しているインターフェイスでは、HTTP/2と同じような「ストリームID」を使用し、ストリームIDの重複を避けるために、クライアントまたはサーバーインスタンスを奇数または偶数のストリームIDにします。私のインターフェースは外部コードを何も知らず、ソケットだけが渡されます。私の質問には質問しないでください。代わりに、回答があればそれに気をつけてください。 –