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

ネットワーク プログラミングには、ネットワーク経由で通信するソフトウェアの作成が含まれます。Python には豊富なライブラリ セットがあるため、ネットワーク アプリケーションの開発は比較的簡単です。この記事では、Python ネットワーク プログラミングの概要を説明し、基本的な概念を説明し、始めるための例を示します。

環境の設定

ネットワーク プログラミングを始める前に、Python がインストールされていることを確認してください。また、Python の標準ライブラリに含まれている `socket` ライブラリも必要なので、追加のインストールは必要ありません。

ソケットを理解する

ソケットは、ネットワーク経由でデータを送受信するためのエンドポイントです。Python の `socket` ライブラリは、ソケットを使用したネットワーク通信用のインターフェイスを提供します。

シンプルなTCPサーバーの作成

着信接続をリッスンして処理する基本的な TCP サーバーの例を次に示します。

import socket

def start_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((host, port))
    server_socket.listen(1)
    print(f'Server listening on {host}:{port}')

    while True:
        client_socket, address = server_socket.accept()
        print(f'Connection from {address}')
        client_socket.sendall(b'Hello, client!')
        client_socket.close()

if __name__ == "__main__":
    start_server()

シンプルなTCPクライアントの作成

サーバーに接続してメッセージを受信するクライアントの例を次に示します。

import socket

def connect_to_server(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((host, port))
    message = client_socket.recv(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    connect_to_server()

UDPを理解する

UDP (User Datagram Protocol) は、ネットワーク通信に使用される別のプロトコルです。TCP とは異なり、UDP は配信、順序付け、エラー チェックを保証しません。UDP 通信の基本的な例を次に示します。

UDP サーバー

import socket

def start_udp_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind((host, port))
    print(f'UDP server listening on {host}:{port}')

    while True:
        message, address = server_socket.recvfrom(1024)
        print(f'Received message from {address}: {message.decode()}')
        server_socket.sendto(b'Hello, UDP client!', address)

if __name__ == "__main__":
    start_udp_server()

UDP クライアント

import socket

def send_udp_message(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    client_socket.sendto(b'Hello, UDP server!', (host, port))
    message, _ = client_socket.recvfrom(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    send_udp_message()

結論

Python の `socket` ライブラリは、ネットワーク プログラミングの堅牢な基盤を提供し、TCP と UDP の両方のアプリケーションを作成できます。基本的なソケット操作とプロトコルを理解することで、さまざまなネットワーク アプリケーションとサービスを構築できます。Python のネットワーク機能をさらに探求して、より洗練された信頼性の高いネットワーク ソリューションを開発してください。