問題タブ [python-sockets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonでソケットサーバーをブロードキャストする
マルチプレイヤーゲームを構築しているため、サーバーが起動したら、サーバー名を継続的にブロードキャストして、実行中のサーバーがあることをクライアントが認識できるようにします。サーバーに接続するための IP アドレスとポート番号を指定したくありません。誰かがサーバー名をブロードキャストするのを手伝ってくれますか?
- ウェブアプリではなくアプリです。
python - 0.0.0.0 にバインドするときに送信元 IP アドレスを見つける
UDP ソケットを("", 1234)
または("0.0.0.0", 1234)
にバインドする場合、実際に送信する IP アドレスを特定できますか?
以下のコードでわかるように、getsockname
私が何にバインドしたかだけを教えてくれます。しかし、パケットを送信すると、私の場合、IP アドレスが10.0.0.2
.
ネットワーク インターフェイスを調べて、このアドレスを自分で推測する必要がありますか? もしそうなら、それは問題ありませんが、そうするための堅牢な方法はありますか?
やってみました
しかし、それはあまり信頼できないようです (私が期待した場合、10.0.0.2
私は を得ました127.0.1.1
)。
に0.0.0.0
バインドすることで、すべてのローカル ネットワーク インターフェイスにバインドできることがわかりました。何かを送信しようとすると、送信元 IP アドレスがルーティング テーブルによって決定されるということですか? もしそうなら、私はまだPythonから堅牢な方法でそのアドレスを取得できますか?
python - ソケットメンバーを持つクラスを作成する方法
内部にソケットメンバーを持ち、メンバー関数を使用して接続、クローズ、送信、および受信する次のクラスを作成しました。
.Connect 関数を正常に実行しましたが、その後 Send 関数を実行すると、「str」オブジェクトに書き込みメンバーがないと表示されます。
これを実現する方法についてのアイデアはありますか?
python - Qt Linux マシン上の UDP ソケットへの書き込みと Windows Python を使用したソケットからの読み取り
=========== 更新: ===========
現在、ブロードキャスト IP 10.6.0.3 とそれ以上のポート 57890 を使用しています。Windows ネットワーク モニターでトラフィックを確認できますが、Python でそれを読み取ることができません。
==============================
Qt と QUDPSocket を使用して、IP アドレス 10.6.0.2 の UDP ソケットに「hello」メッセージを書き込む Linux マシンがあります。Python を使用して「こんにちは」メッセージを読みたい Windows マシンもあります。私の Qt コードから、データが書き込まれていることがわかりますが、Windows 上の Python プログラムは「データを待機中」のままです。Windows マシンは実際に 10.6.0.2 に ping を実行できます。私は何を間違っていますか?
テスト シーケンス:
Qt 出力:
Qt コード:
Python プログラム:
python - Python URLLIB2 で膨大な長さのコンテンツを読み取るとソケットがブロックされる
Python を使用して、JSON応答を返す Web サービスを使用しています。応答のコンテンツの長さがそれほど大きくない場合、すべてがうまくいきます。応答のコンテンツの長さが非常に長い場合、問題が前面に出てくるようです。
これは私のコードのスニペットで、非常に単純です:
requestは正しい形式の urllib2.Requestです。
response.info()を出力すると、次のようになります。
私のスクリプトは、ソケットがブロックされているかのように、 response.read()に永久にスタックします。
解決策を探していますが、まだ見つかりません。
本当に助かります。
python - Unix ドメイン ソケット ロックの往復
UNIXドメインソケットを使用して相互に通信するために、1つはc ++で、もう1つはPythonで2つのプログラムを作成しています。私がやろうとしているのは、C++ コードから Python コードに数値を送信し、Python コードから別の数値を C++ に送信することです。これは、C++ コードが送信する数値を使い果たし、実行が停止するまで続きます。以下は私のコードです。ループの最初の繰り返しを過ぎてそれらを実行できないようです。
最初に Python を実行します:
python code.py /tmp/1 /tmp/2
次に、C++ コードを実行します:
./code /tmp/1 /tmp/2
出力は次のとおりです。
C++ 出力:
送信 0
リスニング
接続成功
受信 5
送信 1
リスニング
Python 出力:
リスニング ...
受信 (0,)
>5
送信 5
リスニング ...
C++ コード:
Python コード:
このアプローチで何が間違っていますか? スレッドを使用する必要がありますか?
ありがとう
python - データを受信したら tcp_server プログラムを再起動する必要があるのはなぜですか?
Pythonで単純なtcp_serverを使用しています。コードは次のとおりです。
私の質問は、データを受信すると接続が切断され、tcp_server プログラムを再実行して接続を開始する必要があるということです。どうすれば永遠に聴き続けることができますか。