2016-05-12 4 views
0

「Black Hat Python」という本を使って作業しており、ポート80の127.0.0.1へのUDP接続に問題があります。このようなものなので、私は単に座ってすぐに効率的にトラブルシューティングをすることができるので、誰かがエラーを指摘してくれるかもしれないと思うかもしれません。 VMware FusionでKali VMでこれをテストしています。ソケットは開いたままで応答を待ちますが、ソケットを受け取ることはありません。pythonでudpクライアントを使用して127.0.0.1からの応答を受け取る問題

import socket 

target_host = "127.0.0.1" 
taget_port = 80 

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
client.sendto("AAABBBCCC", (target_host, taget_port)) 

data, addr = client.recvfrom(4096) 

print data 
+0

ていますか? –

+0

私は今Wiresharkを使って確認しようとしていますが、私はこのように新しいと言いましたので、パケットを通した盗聴以外のものを探し、私が私のものを見ているかどうかは完全にはわかりません。 –

+0

メッセージを受け取るために正確に何を使用していますか? –

答えて

0

クライアントとサーバーが同じスレッドに存在するアーキテクチャは非常に珍しいです。私はそれをお勧めしません。

それにもかかわらず、あなたのプログラムは、あなたが望むように動作しますあなた.bind()ターゲットアドレスへのソケットの場合:サーバーは、あなたのメッセージ(「AABBBCCCを」)を受信して​​いることを確認してください

import socket 

target_host = "127.0.0.1" 
target_port = 8000 

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
client.bind((target_host, target_port)) 
client.sendto("AAABBBCCC", (target_host, target_port)) 

data, addr = client.recvfrom(4096) 

print data 
+0

異なるTCP/IPプロトコルをどのようにデモンストレーションしているのか、以下の本で説明します。それは動作しますが、なぜ彼はHTTPポートを指定していますか?これは私のしていることに関係なくこれまで働くことはありませんか? 編集:ポートを80に変更しましたが、その時に動作していたようです。彼の例ではちょうどタイプミスかもしれません。なぜなら私はudpクライアント/サーバのほとんどすべての例がソケットをターゲットアドレスにバインドする必要があるからです。 –

+0

1)あなたが使っている本では、それぞれの例が1組のプログラムとして与えられていると確信しています。クライアントプログラムの動作をテストするには、サーバプログラムを実行する必要があります(おそらく、別のコマンドウィンドウで)。あなたの質問から、クライアントプログラムをサーバープログラムの恩恵なしに実行したいと思うようです。 '.bind()'を追加すると、プログラムはクライアントとサーバの両方として同時に動作します。 2)便宜のためにポート番号を変更しただけです。 '80'でも同様にうまくいくはずです。 –

+0

私は助けに感謝します。 –

関連する問題