Python ソケット フラッシュ

Abid Ullah 2023年6月21日
  1. Python ソケット フラッシュ
  2. Python でソケットをフラッシュする
Python ソケット フラッシュ

この記事では、Python の socket モジュールが、基礎となるネットワーク ソケット実装への低レベル インターフェイスをどのように提供するかを説明します。 Python の socket モジュールでいくつかの重要なメソッドを確認します。

また、Python を使用してサーバーからクライアントにメッセージを送信する方法を理解するために、いくつかの Python コードについても説明します。 それでは始めましょう。

Python ソケット フラッシュ

Python でソケットをフラッシュする方法を考えたことはありますか? もしそうなら、私たちは一人ではありません。

ソケットをフラッシュすることは、ネットワーク化されたアプリケーションでは一般的ですが、ほとんどの人はそれがどのように機能するかを理解するのに助けが必要です.

この Python の記事では、ソケット フラッシュとは何か、またそのしくみについて説明します。 また、Python でソケットをフラッシュする方法についても説明します。

ソケット フラッシングの定義

ソケットをフラッシュすると、内部バッファがクリアされます。 このバッファには、送受信待ちのデータが格納されます。

多くの場合、ソケットのフラッシュは、バッファー内のすべてのデータが確実に送受信されるようにするために必要です。

たとえば、リモート サーバーにデータを送信する場合、ソケットをフラッシュして、接続が閉じられる前にすべてのデータが送信されるようにすることができます。

Python のソケット フラッシュ関数は、ソケットの書き込みバッファをフラッシュするために使用されます。 この関数は通常、ソケットが閉じられる前にバッファ内のすべてのデータが送信されるようにするために使用されます。

ソケットフラッシングのプロセス

ソケットをフラッシュすると、バッファ内のデータがすぐに送受信されます。 ソケットをフラッシュするプロセスは、通常、オペレーティング システム (Windows、Mac、または Linux) によって処理されます。

ほとんどの場合、ソケットのフラッシュがどのように機能するかの詳細について心配する必要はありません。 ただし、バッファ内のデータはすぐに送受信されることを理解することが重要です。つまり、すべてのデータが送信される前に接続が閉じられると、データが失われる可能性があります。

Python でソケットをフラッシュする

Python でソケットをフラッシュするのは比較的簡単です。 このプロセスは、Python でのファイルのフラッシュに似ています。

ご覧のとおり、プロセスは非常に簡単です。 ただし、バッファ内のデータはすぐに送信されることを覚えておくことが重要です。そのため、接続が閉じられる前にすべてのデータが送信されるように注意する必要があります。

Python でソケット プログラミングを実現するには、socket モジュールまたはフレームワークをインポートする必要があります。 このモジュールは、ソケットを作成し、それらを相互に関連付けるのに必要な組み込みメソッドで構成されています。

socket モジュールの重要なメソッド:

  1. socket.socket(): ソケットを作成するために使用されます (ソケットを作成するには、サーバー側とクライアント側の両方で必要です)。
  2. socket.accept(): 接続を受け入れるために使用されます。 値のペア (conn, address) を返します。
  3. socket.bind(): パラメータとして指定されたアドレスにバインドするために使用されます。
  4. socket.close(): パラメータとして指定されたアドレスにバインドするために使用されます。
  5. socket.connect(): ソケットをクローズとしてマークします。
  6. socket.listen(): パラメータとして指定されたリモートアドレスに接続するために使用されます。

サーバ

次に、ファイルを作成して名前を付けます。 この例では、ファイルに SERVER1.py という名前を付けました。

次に、サーバーのコードを書き始めます。

まず、socket ライブラリをインポートします。 次に、socket.socket() メソッドを使用してソケットを作成し、それを sock に割り当てます。

ブラケット内では、socket.AF_INET を使用して、アドレス ファミリを AF_INET として指定します。 AF_INET はインターネットからのアドレスを指すことに注意してください。

また、ホストとポート番号のペアが必要です。 ホストは、特定の Web サイトの URL、またはそのアドレスまたはポート番号を整数として使用できます。

指定する 2 番目のパラメータは、socket.SOCK_STREAM です。 SOCK_STREAM は、TCP プロトコルを作成するために使用されます。

次にしなければならないことは、bind 関数を書くことです。 bind メソッドは 2つのパラメーターをタプルとして受け入れるため、まとめて 1つのパラメーターになります。

ホストとポート番号に一致します。 パラメータとして、socket.gethostname(), 1024 を使用します。

サーバーをクライアントにバインドさせたいので、bind メソッドを使用します。

次に、listen メソッドを使用して任意の数値を渡します。 私たちの場合、5 を通過しました。

ここで、接続がTrueである間、サーバーがクライアントソケットとそのアドレスを受け入れるように、ループを使用します。 これには accept メソッドを使用します。

クライアントソケットとそのアドレスを受け取ったら、それを出力します。 print メソッドを使用し、print メソッドでは f 文字列を使用します。

f 文字列は f で始まるリテラル文字列であり、括弧内に Python 式が含まれています。 printステートメント内で、メッセージ{adr}への接続が確立されましたを提供します。

したがって、接続が確立されたら、サーバーからクライアントにいくつかのメッセージを渡したいと思います。 このために、c.send を使用します。

そして、バイトが必要なので、それを指定します。 この中にメッセージを書いていきます。

私たちの場合、メッセージはPython でのソケット プログラミングです。 バイトを使用したので、どのようなバイトかを記述する必要があります。

私たちの場合、utf-8 と書きます。 サーバーの準備が整いました。

コード例:

import socket

# We imported the socket library
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((socket.gethostname(), 1024))
sock.listen(5)
while True:
    clt, adr = sock.accept()
    print(f"Connection to {adr} established.")
    clt.send(bytes("Socket programming in Python", "utf-8"))

コマンドプロンプトでカーソルが点滅していることがわかります。 次に、クライアントに移動します。

クライアント

そのため、同じディレクトリで新しいファイルを開き、名前を付けます。

この例では、ファイルに CLIENT1.py という名前を付けました。 まず、socket ライブラリをインポートします。

socket メソッドを使用して、クライアント用のソケットを作成します。 サーバー用に作成したのと同じ方法。

次に、クライアントをサーバーに接続します。 そのため、connect メソッドを使用し、サーバーで使用したのと同じポート番号とともにパラメーターを gethostname として指定します。 というわけで1024です。

次に、メッセージを変数に保存する必要があります。 この例では、msg という名前を付けます。

recv メソッドを使用してメッセージを受信します。 この recv メソッドには、パラメーターとして任意のバイト数を指定できます。

そのパラメータは、サーバーとクライアント間の 1 回の通信で受信されます。 したがって、最初のケースでは 1024 を使用します。

この後、受け取った番号を印刷します。 転送されるメッセージはエンコードされているため、utf-8 バイトを使用してデコードする必要があります。

コード例:

import socket

# We imported the socket library
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((socket.gethostname(), 1024))
msg = sock.recv(1024)
print(msg.decode("utf-8"))

サーバーとクライアントのファイルを実行する準備が整いました。

同じフォルダー内のサーバーとクライアントのファイル

同じフォルダーでコマンド プロンプトを開き、これらのファイルを実行し、最初にサーバーのパスを py Filename.py として書き込みます。 この場合、py SERVER1.py と書き、Enter を押します。

そこでカーソルが点滅します。

次に、別のコマンド プロンプトを開き、2 番目のファイルを py Filename.py として実行します。 この場合、py CLIENT1.py と書き、Enter を押します。

出力:

クライアントとサーバー間の接続が確立される

両方のファイルを実行すると、Python でのソケット プログラミングというメッセージが表示されます。

ソケットのフラッシュは、ネットワーク化されたアプリケーションで作業する場合の一般的なタスクです。 プロセスは比較的単純ですが、バッファ データがすぐに送信されることを覚えておくことが重要です。

ネットワーク化されたアプリケーションを操作する場合、ソケットのフラッシュがどのように機能するかを理解することが重要です。 少し練習すれば、Python で簡単にソケットをフラッシュできます。

この Python 記事が、Python ソケット フラッシュの方法を理解するのに役立つことを願っています。

著者: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

関連記事 - Python Socket