2017-08-09 4 views
-2

を、メッセージをオフに送信、私は、このリンクでのコードのオフに基づいて、メッセージングソフトウェアを書いています:は、コンピュータにネットワークのpython

http://code.activestate.com/recipes/578802-send-messages-between-computers/

私はこのコードを愛し、それがうまく動作しますが、それは私をさせません自分のネットワークにないコンピュータにメッセージを送信する。私はこのコードを変更できる方法があるかどうか疑問に思っていたので、どこにいてもコンピュータにメッセージを送ることができました。

助けや助言があれば助かります。

+0

コンピュータがワールドワイドウェブに接続されていて、ネットワーク上に*ある程度*存在する場合は、あなたが話すことができる公開用のIPアドレスがない可能性があります。 – turbulencetoo

+0

NATの背後にあるソースおよび/または宛先ネットワークの可能性があります。この場合、通信を行うには2つの方法があります。パブリックアドレスを持つ中央サーバーを使用して、クライアント間のメッセージを中継するか(IRCのように)、NATのファイアウォールごとにポートを設定して通信を許可します。ネットワーク通信を扱うための高水準のライブラリがあり、普通のソケットを扱うことは苦痛であり、竜巻やねじれをチェックすることができます。 –

答えて

0

コードは機能するはずです。 pingを使用して宛先を確認できますか。 コンピュータが内部ネットワークに接続されている場合、外部コンピュータは内部ネットワークが外部に提供するアドレスであるNATアドレスのみを表示することがあります。また、送信しようとしているコンピュータには、外部IPが必要です(内部ネットワーク用に予約されたアドレスではありません)。 理想的には、チャットしようとしている両方のコンピュータに、内部IPがありません。

+0

この回答は事実上正しいものですが、コメントにすぎません。 –

+0

どのように非内部IPアドレスを取得しますか? – Max

+0

なぜそれはあなたのネットワーク上でのみ動作することをWebサイト上で言うのどこから動作する必要がありますか? – Max

-1

コードレシピは、データグラムソケット(UDPプロトコル)を使用します。これらは、ゲートウェイ/プロキシ/ファイアウォールによってブロックされることがよくあります。代わりにTCPを使用するように切り替える必要があります。

+0

私はこれが重要だとは思わない。ほとんどのネットワークは多対1 NAT(ソースNAT)を使用しており、ファイアウォールにポート転送を設定しない限り、パブリックネットワークからUDPとTCPの両方を接続する方法はありません。 「ブロッキング」はソースNATの自然な副作用です。 –

+0

ええ、私はUDPマルチキャストと混同していると思います。通常のUDPは、NATの問題以外にもうまくルーティングされます。 –

関連する問題