ソケット通信について説明しますね。ソケット通信は、ネットワーク上のデバイス同士がデータを送受信するための基盤的な技術です。具体的には、アプリケーションがネットワーク通信を行う際に、ソケットというインターフェースを使って通信を行います。
ソケット通信には「クライアント」と「サーバー」の役割があります。クライアントは通信を開始し、サーバーは通信を受け入れて処理します。
ソケット通信は、例えば次のような場面で使われます:
次にソケット通信の流れを図解します。
[クライアント] [サーバー]
| |
|------接続要求 (connect)-------->|
| |
|<-------接続許可 (accept)--------|
| |
|-------データ送信 (send)-------->|
| |
|<-------データ受信 (recv)--------|
| |
|-------接続終了 (close)--------->|
import socket
# サーバーソケットを作成
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8080)) # IPアドレスとポート番号を指定
server_socket.listen(1) # 接続を待つ
print("サーバーが接続を待っています...")
client_socket, addr = server_socket.accept() # クライアントからの接続を受け入れる
print(f"{addr} から接続されました")
# データの送受信
client_socket.send(b'Hello, Client!')
data = client_socket.recv(1024)
print(f"クライアントからのメッセージ: {data.decode()}")
# ソケットを閉じる
client_socket.close()
server_socket.close()
import socket
# クライアントソケットを作成
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8080)) # サーバーに接続
# データの送受信
data = client_socket.recv(1024)
print(f"サーバーからのメッセージ: {data.decode()}")
client_socket.send(b'Hello, Server!')
# ソケットを閉じる
client_socket.close()
この例では、ローカルネットワーク上でシンプルなサーバーとクライアントの通信を行います。最初にサーバーを起動し、クライアントが接続してデータをやり取りします。
ソケット通信の仕組みやコードについて理解するのに役立ったでしょうか?