0

サービス(IP +ポート)が実行されていることに基づいて、リモートホストが稼働しているかどうかを検出する必要があります。ICMPポートがブロックされていても動作させる必要があるため、pingを使用できません。

サービスがTCPを使用している場合もあれば、UDPを使用している場合もあります(ただし、確認する必要がある場合、サーバーをUDPまたはTCPで実行する必要があるかどうかは、そのタイプによって異なります)。TCPポートのチェックに問題はありません( https://stackoverflow.com/a/7605428/397830に基づく)。しかし、UDP は接続指向のプロトコルではないため、リモート ホストがこのポートで UDP をリッスンしていることを確認するにはどうすればよいでしょうか?

ありがとうございました!

4

3 に答える 3

0

UDP は主にファイア アンド フォーゲットです。ポートに到達できないという応答が得られない場合は、ポートが開いている可能性があります...次の python スクリプトを試してください。

import socket

IP = "172.16.0.1"
PORT = 1900
MESSAGE = "Hello"

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (IP, PORT))

これを実行している間、ルートとして $(tcpdump icmp and host 172.17.0.1) を実行します ポートが閉じている場合は、次のように表示されます IP 172.16.0.1 > xxx.local: ICMP 172.16.0.1 udp port 1900 unreachable, length 49 Theこれがない場合、ポートが開いている可能性があります

于 2013-04-25T14:21:34.550 に答える