1

コンピューターを接続するために使用可能なすべてのポートを見つけようとしています。以下のコードを使用しています

import psutil
for proc in psutil.process_iter():
    print (proc)
    for x in proc.connections():
        if x.status == psutil.CONN_LISTEN:
            print (x)

print(proc)などのすべてのプロセスを出力しますpsutil.Process(pid=5808, name='pythonw.exe')。私の最初の質問は、そのpid変数は何ですか? それはポートですか?

2 つ目は、ローカル アドレスを表していると理解したprint (x)ような出力が得られたときですが、他の数字は何ですか? 「xxx.xxx」は IP アドレスのように見えますが、一部の出力では空で、数字がありません。また、 の 2 番目の変数は 3 桁の場合もあれば、5 桁の場合もあります。それらの数字は何の略ですか?pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=('xxx.x.x.x', xxxxx), raddr=(), status='LISTEN')laddrladdrladdr

そして私の最後の質問は、開いているポートを見つけるための正しい方法ですか? コンピューターを接続しようとしているので、最初に開いているポートを見つけようとしています。

4

2 に答える 2

0

「開いている」ポートに「接続」するのは難しいでしょう。ポートが開かれると、ポートを開いたプログラムはそのポートでリッスンします。

空いているポートを見つけたい場合は、スクリプトが逆に機能しています! 使用されていないポートを探す必要があります。同じポートで 2 つのプログラムを動作させることは実際にはできません。すべてのポート 1 ~ 65535 を開くことができます。

ネットワーク経由で通信したい場合は、ポートをリッスンするコンピューター A に常駐するプログラムを作成する必要があります。次に、コンピューター B に、そのポートでコンピューター A への接続を開かせます。この時点で、B から書き込んだデータはすべて、A で実行されているプログラムに送信されます。

于 2016-06-04T00:30:11.457 に答える