Python-network-programming-python-sockets-programming
Python-ソケットプログラミング
Pythonは、ネットワークサービスへの2つのレベルのアクセスを提供します。 低レベルでは、基盤となるオペレーティングシステムの基本的なソケットサポートにアクセスできます。これにより、接続指向プロトコルとコネクションレスプロトコルの両方のクライアントとサーバーを実装できます。
Pythonには、FTP、HTTPなどの特定のアプリケーションレベルのネットワークプロトコルへの高レベルのアクセスを提供するライブラリもあります。
ソケットは、双方向通信チャネルのエンドポイントです。 ソケットは、プロセス内、同じマシン上のプロセス間、または異なる大陸のプロセス間で通信できます。 ソケットモジュールを使用して、ソケットを作成および使用します。
ソケットには独自の語彙があります-
Sr.No. | Term & Description |
---|---|
1 |
Domain トランスポートメカニズムとして使用されるプロトコルファミリ。 これらの値は、AF_INET、PF_INET、PF_UNIX、PF_X25などの定数です。 |
2 |
type 2つのエンドポイント間の通信のタイプ。通常、接続指向プロトコルの場合はSOCK_STREAM、コネクションレスプロトコルの場合はSOCK_DGRAM。 |
3 |
protocol 通常、これはドメインおよびタイプ内のプロトコルのバリアントを識別するために使用できます。 |
4 |
hostname ネットワークインターフェイスの識別子-
|
5 |
各サーバーは、1つ以上のポートで呼び出しているクライアントをリッスンします。 ポートは、Fixnumポート番号、ポート番号を含む文字列、またはサービスの名前です。 |
_socket_モジュール
ソケットを作成するには、一般的な構文を持つ_socket_モジュールで利用可能な_socket.socket()_関数を使用する必要があります-
ここにパラメータの説明があります-
- socket_family -これは、前述のようにAF_UNIXまたはAF_INETのいずれかです。
- socket_type -これはSOCK_STREAMまたはSOCK_DGRAMのいずれかです。
- protocol -これは通常省略され、デフォルトは0です。
_socket_オブジェクトを取得したら、必要な関数を使用してクライアントまたはサーバープログラムを作成できます。
サーバーソケットメソッド
Sr.No. | Method & Description |
---|---|
1 |
s.bind() このメソッドは、アドレス(ホスト名、ポート番号のペア)をソケットにバインドします。 |
2 |
s.listen() このメソッドは、TCPリスナーをセットアップして開始します。 |
3 |
s.accept() これは、TCPクライアント接続を受動的に受け入れ、接続が到着するまで待機します(ブロック)。 |
クライアントソケットメソッド
Sr.No. | Method & Description |
---|---|
1 |
s.connect() このメソッドは、TCPサーバー接続をアクティブに開始します。 |
一般的なソケットメソッド
Sr.No. | Method & Description |
---|---|
1 |
s.recv() このメソッドはTCPメッセージを受信します |
2 |
s.send() このメソッドはTCPメッセージを送信します |
3 |
s.recvfrom() このメソッドはUDPメッセージを受信します |
4 |
s.sendto() このメソッドはUDPメッセージを送信します |
5 |
s.close() このメソッドはソケットを閉じます |
6 |
socket.gethostname() ホスト名を返します。 |
シンプルなサーバー
インターネットサーバーを作成するには、ソケットモジュールで使用可能な socket 関数を使用してソケットオブジェクトを作成します。 次に、ソケットオブジェクトを使用して他の関数を呼び出し、ソケットサーバーをセットアップします。
次に、* bind(hostname、port)*関数を呼び出して、指定されたホスト上のサービスの_port_を指定します。
次に、返されたオブジェクトの_accept_メソッドを呼び出します。 このメソッドは、クライアントが指定したポートに接続するまで待機し、そのクライアントへの接続を表す_connection_オブジェクトを返します。
シンプルなクライアント
特定のポート12345と特定のホストへの接続を開く、非常に単純なクライアントプログラムを作成してみましょう。 これは、Pythonの_socket_モジュール関数を使用してソケットクライアントを作成するのは非常に簡単です。
- socket.connect(hosname、port)*は、_port_上の_hostname_へのTCP接続を開きます。 ソケットを開いたら、IOオブジェクトのようにソケットから読み取ることができます。 完了したら、ファイルを閉じるのと同じように忘れずに閉じてください。
次のコードは、特定のホストとポートに接続し、ソケットから利用可能なデータを読み取り、終了する非常に単純なクライアントです-
次に、このserver.pyをバックグラウンドで実行し、client.pyの上で実行して結果を確認します。
これは、次の結果を生成します-
パブリックURLを持つソケット
以下の例では、ソケットモジュールのいくつかのメソッドを使用して、サーバーのアドレス情報とホスト名の詳細を検索します。
上記のプログラムを実行すると、次の出力が得られます-