問題タブ [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 リクエストを高速化する
HTTP プロトコルでは、キープアライブを使用して 1 つのソケットで多くの要求を送信し、サーバーからの応答を一度に受信できるため、プロセス全体が大幅に高速化されます。Pythonリクエストlibでこれを行う方法はありますか? または、リクエストlibを使用してこれを高速化する他の方法はありますか?
http-headers - httpサーバーpython 3.4のバイナリとして画像を読み込む
まず、ネットワーク ライブラリは使用できないことを指摘しておきます。私がやろうとしていることの目的は、文字列操作/変換を使用して http 1.1 ヘッダーとデータを提供する方法を学ぶことです。この場合、次の URL で .jpg ファイルを提供しようとしています。
サーバーは既に GET リクエストを受信しており、問題はファイル i/o またはクライアントへのデータ送信方法にあるようです。私はPythonとHTTPが初めてなので、優しくしてください;)。これは、ubuntu 14.04 の python 3.4 で行われます。
関連コード:
質問:
.jpg ファイルのバイナリ読み取りは次のようになると予想されますか。
/li>
複数のソースから、このようには見えない他のバイナリ値を見てきました。私の理解では、サーバーがソケットを介してクライアントにデータを送信するには、データはバイナリである必要があります。これが正しくない場合、ファイル I/O に何が欠けていますか? これが正しい場合、sendall() を使用してデータを送信できるようにするために、どの手順が欠けていますか?
上記の質問に対して、file_data は sendall() にどのように影響しますか?
/li>
python3 ドキュメント セクション 18.1 を読むと、sendall() のパラメータはバイトでなければならないことがわかります。file_data は、ヘッダーのように bytes(xxx, 'idk what encoding') を使用してエンコードする必要がありますか? 「ascii」を使用してもまったく機能しませんでした。
- バイト配列を使用して http 応答ヘッダーとファイル データの両方を格納し、両方を 1 つの sendall() で送信できるようにすることをお勧めしますか? それとも、これは必要ありませんか?
ブラウザ (Firefox) での出力:
皆さん、ありがとうございました。さらに詳しい情報が必要な場合はお知らせください。
python - Python ソケット サーバー/クライアントがループしない
ソケットを介して接続された 2 つのクライアントで処理される数推測ゲームに取り組んでいますが、何らかの理由で最初のループの後に動作が停止し、何も送受信しません。コードは最初はすべて正常に実行されますが、何を変更しても、2 回目はサーバー ファイルの行でエラーが発生し、intguessNumber = int(s.recv(4096).decode()
に変更しようとするとエラーが報告されます。''
これは、値を受け取っていないことを意味します (これらの場合、クライアント プログラムも"What is your guess? "
文字列を受け取りません)。ただし、以下のコードは、最初のループの後に何もしません。最初のループで数字を推測すると、正常に機能し、スコアがファイルに書き込まれ、両方とも正常に終了します。
しかし、そうしないと何もしないので、助けていただければ幸いです。IDLE IDE を使用して Python 3.4.2 で実行されています。
サーバ:
クライアント:
python - Python Sockets - サーバーにパケットを送信し、応答を待つ
現在、 Parallels PVA XML APIにパケットを送信するために以下のコードを実装しています。2 つのXML パケットをサーバーに送信しようとしています。1 つ目はユーザーの資格情報を指定するログイン パケットで、2 つ目は API 要求に関する情報を含むパケットです。これらのパケットはヌル バイトで区切られているはず\0
です。通常、サーバーは複数のパケットを返します。最初のパケットはログインが成功したことの説明であり、2 番目のパケットには API 要求に関する情報が含まれています。
私が抱えている問題は、2 番目のパケットが送信されていないように見えることです。返される唯一の応答は、ログインが成功したことを明確にする最初のパケットですが、API 要求に関する情報を含むパケットは返されません。これはnullバイトを送信しているせいかもしれないと思ったので、すべてbase64でエンコードしてみましたが、同じ結果になりました。
そのため、接続が閉じられていて、サーバーが2番目のパケットを送信するのに十分な時間を取得していないか、ヌルバイトのためにパケットが完全に無視されているようです。
ヘルプやコメントは大歓迎です。前もって感謝します!
機密情報が含まれており、意図的に IP アドレスが「[IP_ADDRESS]」に置き換えられているため、意図的にパケットに情報が含まれていないことに注意してください。
python - サーバーが接続を閉じるとPythonクライアントが切断される
クライアントがリクエストメッセージをサーバーに送信し、応答を待つPythonのサーバーとクライアントコードがあります。クライアントが適切なリクエストを送信しない場合に接続を閉じるサーバーコードがあります。サーバーがリクエストを閉じても、クライアントは引き続きレスポンスを永遠にリッスンします。
以下はコードです
サーバー.py
Client.py
私はpythonが初めてで、サーバーが接続を閉じて終了したことをクライアントが知る方法があるかどうか疑問に思っています。
通常を使用すると、クライアントが切断されることを理解していますs.recv(1024)
。しかし、私の場合、クライアントに大きなデータを送信する必要があるため、http://code.activestate.com/recipes/408859-socketrecv-three-ways-to-turn-it-から見つけた別の関数を使用しました。 into-recvall/ .
サーバーが接続のクローズ中に空の文字列の応答を送信するようなものですか?私の場合、エンドリミッターなしで空の文字列を送信するため、クライアントは永遠にリッスンしていますか?