Open1

Pythonを使ってソケット通信でJSONデータを送受信するサーバーとクライアントの例

PINTOPINTO

【全部未検証】

Pythonを使って、ソケット通信を使ってJSONデータを送受信するサーバーとクライアントの例

サーバーはUDPソケットを使ってJSONデータをブロードキャストし、クライアントは同じUDPソケットを使ってデータを受信。サーバー側のコードはデータをJSON形式に変換し、それをブロードキャストアドレスに送信。一方、クライアント側はソケットからデータを受信し、JSON形式からPythonオブジェクトに変換して表示。

server.py
import socket
import json
import time

def main():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

    broadcast_address = ('255.255.255.255', 5000)

    data = {
        "message": "Hello, from server!",
        "timestamp": time.time()
    }

    while True:
        json_data = json.dumps(data).encode('utf-8')
        server_socket.sendto(json_data, broadcast_address)
        print("Broadcasting JSON data:", data)
        time.sleep(5)

if __name__ == '__main__':
    main()
client.py
import socket
import json

def main():
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

    client_socket.bind(('', 5000))

    while True:
        json_data, addr = client_socket.recvfrom(1024)
        data = json.loads(json_data.decode('utf-8'))
        print(f"Received JSON data from {addr}: {data}")

if __name__ == '__main__':
    main()