工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python-ネットワークプログラミング

前のページ次のページ

Python は、ネットワーク サービスへの 2 つのレベルのアクセスを提供します。低レベルでは、基盤となるオペレーティング システムの基本的なソケット サポートにアクセスできます。これにより、コネクション型プロトコルとコネクションレス型プロトコルの両方のクライアントとサーバーを実装できます。

Python には、特定のアプリケーション レベルのネットワーク プロトコル (FTP、HTTP など) への高レベルのアクセスを提供するライブラリもあります。

この章では、ネットワークで最も有名な概念であるソケット プログラミングについて理解できます。

ソケットとは?

ソケットは、双方向通信チャネルのエンドポイントです。ソケットは、プロセス内、同じマシン上のプロセス間、または異なる大陸のプロセス間で通信できます。

ソケットは、さまざまな種類のチャネル (Unix ドメイン ソケット、TCP、UDP など) で実装できます。 ソケット ライブラリは、共通のトランスポートを処理するための特定のクラスと、残りを処理するための汎用インターフェイスを提供します。

ソケットには独自の語彙があります −

Sr.No. 用語と説明
1

ドメイン

トランスポート メカニズムとして使用されるプロトコルのファミリー。これらの値は、AF_INET、PF_INET、PF_UNIX、PF_X25 などの定数です。

2

タイプ

2 つのエンドポイント間の通信のタイプ。通常、接続指向プロトコルの場合は SOCK_STREAM、コネクションレス プロトコルの場合は SOCK_DGRAM です。

3

プロトコル

通常はゼロです。これは、ドメインおよびタイプ内のプロトコルのバリアントを識別するために使用できます。

4

ホスト名

ネットワークインターフェースの識別子 −

  • ホスト名、ドット区切りアドレス、またはコロン (場合によってはドット) 表記の IPV6 アドレスの文字列

  • INADDR_BROADCAST アドレスを指定する文字列 ""。

  • INADDR_ANY を指定する長さ 0 の文字列、または

  • ホスト バイト順のバイナリ アドレスとして解釈される整数。

5

ポート

各サーバーは、1 つ以上のポートで呼び出しているクライアントをリッスンします。ポートは、Fixnum ポート番号、ポート番号を含む文字列、またはサービスの名前です。

ソケット モジュール

ソケットを作成するには、socket.socket() を使用する必要があります ソケットで利用可能な機能 一般的な構文を持つモジュール-

s = socket.socket (socket_family, socket_type, protocol=0)

パラメータの説明は次のとおりです-

ソケットを取得したら オブジェクトを作成すると、必要な関数を使用してクライアント プログラムまたはサーバー プログラムを作成できます。以下は、必要な機能のリストです-

サーバー ソケット メソッド

Sr.No. 方法と説明
1

s.bind()

このメソッドは、アドレス (ホスト名、ポート番号のペア) をソケットにバインドします。

2

s.listen()

このメソッドは、TCP リスナーをセットアップして開始します。

3

s.accept()

これは、TCP クライアント接続を受動的に受け入れ、接続が到着するまで待機します (ブロック)。

クライアント ソケット メソッド

Sr.No. 方法と説明
1

s.connect()

このメソッドは、積極的に TCP サーバー接続を開始します。

一般的なソケット メソッド

Sr.No. 方法と説明
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) を呼び出します ポートを指定する関数 与えられたホスト上のあなたのサービスのために。

次に、accept を呼び出します 返されたオブジェクトのメソッド。このメソッドは、指定したポートにクライアントが接続するまで待機し、接続を返します そのクライアントへの接続を表すオブジェクト。

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

単純なクライアント

特定のポート 12345 と特定のホストへの接続を開く非常に単純なクライアント プログラムを作成してみましょう。 Python の socket を使用してソケット クライアントを作成するのは非常に簡単です。 モジュール関数。

socket.connect(hosname, port ) ホスト名へのTCP接続を開きます で .ソケットを開くと、IO オブジェクトと同じように読み取ることができます。完了したら、ファイルを閉じるのと同じように、忘れずに閉じてください。

次のコードは、特定のホストとポートに接続し、ソケットから利用可能なデータを読み取り、終了する非常に単純なクライアントです-

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

この server.py をバックグラウンドで実行し、次に client.py の上で実行して結果を確認してください。

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

これにより、次の結果が生成されます-

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Python インターネット モジュール

Python Network/Internet プログラミングにおける重要なモジュールのリスト。

プロトコル 共通機能 ポート番号 Python モジュール
HTTP ウェブページ 80 httplib、urllib、xmlrpclib
NNTP ユーズネット ニュース 119 nntplib
FTP ファイル転送 20 ftplib、urllib
SMTP メールの送信 25 smtplib
POP3 メールを取得しています 110 poplib
IMAP4 メールを取得しています 143 imaplib
Telnet コマンドライン 23 telnetlib
ホリネズミ 書類の転送 70 gopherlib、urllib

上記のすべてのライブラリをチェックして、FTP、SMTP、POP、および IMAP プロトコルで動作するようにしてください。

参考文献

これは、ソケット プログラミングのクイック スタートでした。それは広大な主題です。詳細については、次のリンクを参照することをお勧めします −


Python

  1. Python データ型
  2. Python 演算子
  3. Python pass ステートメント
  4. Python 関数の引数
  5. Python 辞書
  6. Python オブジェクト指向プログラミング
  7. Python イテレータ
  8. Python クロージャー
  9. Python 日時
  10. Pythonスリープ()
  11. Python - マルチスレッド プログラミング