Python及びUDP方式を用いて、ターミナル上での入力内容を送受信するコード
クライアント側のコード(client.py)
import socket
# UDP方式でソケット作成
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = "localhost"
server_port = 9001
try:
# 任意の名前とメッセージを、ターミナル上で入力する
username = input("please input your username: ")
message = input("please input message: ")
inputcontents = f"username: {username} message: {message}".encode("utf-8")
# 入力内容を送信
client_socket.sendto(inputcontents, (server_address, server_port))
# 接続されている限りは、他のクライアント側から入力された内容を表示する
while True:
data, server = client_socket.recvfrom(4096)
print(data.decode("utf-8"))
finally:
client_socket.close()
サーバー側のコード(server.py)
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = "0.0.0.0"
server_port = 9001
server_socket.bind((server_address, server_port))
clients = {}
print(f"starting up on {server_address} port: {server_port}")
while True:
try:
data, address = server_socket.recvfrom(4096)
# 新規接続の場合、clientsにアドレスを追加する
if address not in clients:
clients[address] = True
print(f"New client connected: {address}")
# 他のクライアント全てに送信された入力内容を中継する
for client_address in clients.keys():
if client_address != address:
server_socket.sendto(data, client_address)
except Exception as e:
print(f"error: " + e)
動作方法
1.まず、現在のディレクトリを確認の上、ターミナルで"python3 server.py"と入力する。
2.次に、別のターミナルを複数窓立ち上げ、全ターミナルで1と同じディレクトリに移動の上で"python3 client.py"を入力する。
3.指示に従ってusername,messageを入力する。
4.他のクライアントに送信されているかを確認する。
この記事が気に入ったらサポートをしてみませんか?