このチュートリアルでは、Pythonソケットを紹介し、
モジュールを使用してHTTPサーバーとクライアントの構築を実証します。 It also explores Tornado, a Python networking library ideal for long-polling, WebSockets, and applications needing persistent user connections.socket
ソケットを理解する
ソケットは、同じマシンでもネットワーク全体でも、2つのアプリケーション間の通信チャネルとして機能します。 基本的に、それはサーバーとクライアントの間の接続リンクです。サーバーは、クライアントから要求された情報を提供します。 たとえば、ブラウザはソケットを使用してWebページにアクセスするときにWebサーバーに接続します。socket
ソケット作成では、関数:を使用します
socket.socket()
引数:
import socket s = socket.socket(socket_family, socket_type, protocol=0)
socket_family
)。
socket.AF_INET
socket.AF_INET6
socket_type
socket.SOCK_STREAM
socket.SOCK_DGRAM
:通常はデフォルトです
protocol
キークライアントメソッド:
:TCP接続を確立します。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect()
import socket stream_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server = "localhost" port = 8080 server_address = (server, port) stream_socket.connect(server_address) message = 'message' stream_socket.sendall(message.encode()) data = stream_socket.recv(10) print(data) stream_socket.close()
:アドレス(hostname、port)をソケットに割り当てます。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
:TCPクライアント接続を受け入れます
s.bind()
s.listen()
(またはOSの同様のコマンド)を使用してください。
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'localhost' port = 8080 sock.bind((host, port)) sock.listen(1) print('Waiting for a connection') connection, client = sock.accept() print(client, 'connected') data = connection.recv(16) print('Received "%s"' % data) if data: connection.sendall(data) else: print('No data from', client) connection.close()
と統合されており、同じイベントループ内で両方のライブラリを使用できます。
netstat -ntlp
同期プログラミングはタスクを順次実行しますが、非同期プログラミングにより、他の人が終了するのを待たずに同時タスクの実行が可能になります。 非同期プログラミングは、API呼び出しなどのI/Oバインド操作を扱い、遅延を防ぎ、アプリケーションの応答性を改善する場合に有利です。 Tornadoの非同期機能は、複数のAPI要求を同時に処理するのに特に役立ちます。
結論
このチュートリアルは、Pythonのソケットプログラミングの基盤を提供し、シンプルなサーバー/クライアントの作成を実証しました。
(竜巻Webサーバー出力の画像 - 利用可能な場合は実際の画像URLに置き換えます)socket
以上がPythonのネットワークプログラミングの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。