3

次のようにポート番号をハードコーディングすることは避けたい:

httpd = make_server('', 8000, simple_app)

この方法でサーバーを作成する理由は、それを Adob​​e AIR アプリの「カーネル」として使用して、PyAMF を使用して通信するためです。これをクライアント側で実行しているため、定義したポートが既に使用されている可能性が非常に高くなります。これを行うためのより良い方法があり、間違った質問をしている場合はお知らせください。

4

4 に答える 4

7

問題は、アプリケーションが使用するための既知のポートが必要なことです。ただし、ポート番号を0にすると、OSが最初に使用可能な未使用のポートを提供すると思います。

于 2009-01-14T06:16:22.633 に答える
6

問題は、アプリケーションが使用する既知のポートが必要なことです。しかし、ポート番号 0 を指定すると、OS が使用可能な最初の未使用ポートを提供すると思います。

あなたは正しいです、サー。仕組みは次のとおりです。

>>> import socket
>>> s = socket.socket()
>>> s.bind(("", 0))
>>> s.getsockname()
('0.0.0.0', 54485)

これで、ポート 54485 にバインドされたソケットができました。

于 2009-01-14T13:41:38.617 に答える
2

あなたmake_serverが書いた関数はありますか?具体的には、ソケットを作成するコードを処理しますか?その場合、ポート番号を指定しない(またはポート番号として0を指定する)方法があり、OSが使用可能なポート番号を選択します。

それ以外に、54315のようなランダムなポート番号を選択することもできます...誰かがそのポート番号を使用する可能性はほとんどありません。

于 2009-01-14T06:16:18.233 に答える
-2

ファイアウォールを使用すると、ポートごとにトラフィックを許可または拒否できます。この理由だけで、明確に定義されたポートのないアプリケーションは、クライアントのインストールであらゆる種類の問題が発生することを予期する必要があります。

ランダムなポートを選択し、必要に応じてユーザーがポートを簡単に変更できるようにします。

ここは、有名なポートの出発点として適しています。

于 2009-01-14T06:20:30.877 に答える