ホームページ >バックエンド開発 >Python チュートリアル >Python サーバー プログラミング: ネットワーク ソケットの詳細な説明

Python サーバー プログラミング: ネットワーク ソケットの詳細な説明

王林
王林オリジナル
2023-06-18 19:00:091036ブラウズ

Python でのネットワーク プログラミングはソケットを使用して実装できます。ソケットはネットワーク通信の基本コンポーネントであり、汎用コンピューター ネットワーク プログラミング インターフェイスです。 Python のソケット ライブラリは、データ転送をサポートするためのシンプルかつ強力なインターフェイスを提供し、Python サーバー プログラミングを適切にサポートします。

ソケットは通信リンクの 2 つのエンドポイントであり、ネットワーク通信の実装に使用され、コンピュータ間のデータ送信インターフェイスを提供します。 Python では、ソケット ハンドルはクライアント接続リクエストまたはサーバー リスニング リクエストにすることができ、ソケットは TCP プロトコルと UDP プロトコルの両方に使用できます。

Python では、ソケットは 2 つのタイプに分類されます:

  1. TCP ソケット

TCP ソケットは、接続送信メソッドを提供します。クライアントは、接続を確立する必要があります。サーバーに接続するときの接続。接続プロセスは「3 ウェイ ハンドシェイク」プロセスです。 TCP プロトコルは、送信が完了したかどうか、送信に失敗した場合は再送信するなど、一連の問題を検出します。 TCPソケットの伝送効率は低いですが、データ伝送は確実です。

  1. UDP ソケット

UDP ソケットは、TCP ソケットと比較して「3 ウェイ ハンドシェイク」を必要としない「コネクションレス」方式を提供します。インターフェース効率が高いです。が、送信信頼性は低いです。

Python では、ソケットを使用する場合、まず接続を確立し、接続が完了したらデータを送信し、送信が完了したら接続を閉じる必要があります。以下は Python でのサーバー側ソケット実装です:

import socket

HOST = '127.0.0.1' #本地ip
PORT = 8888 #端口号

#创建一个套接字对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#将套接字与本地ip及其端口号绑定
server.bind((HOST, PORT))

#开始监听传入的连接
server.listen()

#不断接收客户端的连接,如果有新的连接加入,就创建新的连接线程进行处理
while True:
    #获取客户端请求
    conn, addr = server.accept()
    print('Connected by', addr)

    #接收客户端发来的数据并回应
    data = conn.recv(1024)
    print(data)
    conn.sendall(data)

    #关闭连接
    conn.close()

上記は Python サーバー側ソケット実装の簡単なサンプルコードです. 以下に各部の機能と実装方法を簡単に紹介しますコードの。

まず、Python ソケット ライブラリのソケットをインポートし、サーバーのローカル IP アドレスとポート番号を宣言する必要があります。これは、他のサービスと競合しない限り、後で自分で設定できますコンピューター上で開かれました。

コードでは、最初に空のソケット オブジェクト サーバーが確立され、socket.socket 関数を使用して完了します。最初のパラメータ AF_INET は IPv4 プロトコルを表し、2 番目のパラメータ SOCK_STREAM は TCP プロトコルの使用を表します. .

次に、bind 関数を使用してソケット サーバーをローカル IP とそれに対応するポート番号にバインドします。ここではタプル形式が使用され、ローカル IP とポート番号がパラメータとして渡されます。 IP アドレスに入力します。一重引用符を使用してください。

その後、ソケットサーバーの listen を開始し、listen 関数を使用します。この例では、サーバーはローカル IP とポート番号に対応するソケット情報を受信し、接続要求を受け入れ、接続成功メッセージを返します。

最後に、ループを使用してクライアントのリクエストを継続的に監視し、毎回 1 つのリクエストを取得し、接続されているクライアントの IP アドレスを出力し、クライアントから送信されたデータを受信して​​出力し、応答 。データ転送が完了したら、接続を閉じます。

Python でのネットワーク プログラミングにソケット ソケットを使用すると、より自由度が高まり、さまざまなネットワーク通信ベースのアプリケーションを容易かつ柔軟に実装できます。ここでは、Python のサーバーサイド ソケットについて簡単に紹介します。実装方法は、お役に立てば幸いです。

以上がPython サーバー プログラミング: ネットワーク ソケットの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。