質問

私が探しています http://docs.python.org/library/socketserver.html には、試してみて、Pythonでsocketserverとの非同期要求を処理します。一番下にあっ例であるが、それは意味がありません。それはあなたが任意の未使用ポートを割り当て、ポート0を使用しますと言います。しかし、どのように彼らは同じプログラム内にない場合、クライアントのために使用するポートを知っていますか?私は非常にこれを有用なものにする方法を理解していません。

役に立ちましたか?

解決

クライアントがサーバーと同じスクリプトで実装されているため、

は、ポートが知られています。実際のシナリオでは、あなたのデーモン用のポートを指定する必要があります。あなたのクライアントが接続するポートに知らせることに加えて、あなたはまた、あなたがあなたのクライアントとサーバーの間のファイアウォールを開くことができることを知っておく必要があるかもしれません。

他のヒント

の例では、あなたがリンクされ、彼らはポートを取得されます。

# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 0

server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address

しかし、あなたは本当にあなたが書いて非同期処理を真剣に考えている場合www.twistedmatrix.comされているはずです

あなたはsocketserverが行われた後bindに割り当てられたポートを取得する必要があります。この場合には、これはおそらくip, port = server.server_address経由となります。

任意のポートを使用して、ポートを指定せずにサーバーを作成したいだけの場合です:OSが使用可能なポートを割り当てます。

もちろんにバインドするポートを指定する方法がなければなりません。

server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler)
ip, port = server.server_address

...

client(ip, port, "Hello World 1")

PORT値0はSERVER_ADDRESSのport値はThreadedTCPServer()の呼び出しによって割り当てられているので、「私は、それが何であるかのポート番号を気にしない」と言います。それはゼロではありません。その後、あなたはそれを使用するクライアントにそのport値を渡します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top