😎
Python の UDP サーバーで Fizz Buzz
paiza のひとが UDP サーバーを公開していたので真似してみました ( ref. https://twitter.com/yoshiokatsuneo/status/1366333577529421824?s=09 )
socketserver.UDPServer の例 を流用しただけではありますが。
count をグローバル変数にしてますが、class Handler に __init__
を追加して count をインスタンス変数にしようとしたんですが、serve_forever()
内部で毎回 Handler インスタンスを作り直すようなので( __init__
が毎回呼ばれる) 、インスタンス変数は諦めました。
import socketserver
count = 1
class Handler(socketserver.BaseRequestHandler):
def handle(self):
global count
socket = self.request[1]
if not count % 15:
socket.sendto('ワシントン'.encode(), self.client_address)
elif not count % 3:
socket.sendto('霧島'.encode(), self.client_address)
elif not count % 5:
socket.sendto('瑞鶴'.encode(), self.client_address)
count += 1
with socketserver.UDPServer(('localhost', 12345), Handler) as sv:
sv.serve_forever()
クライアントは nc で。
$ nc -u localhost 12345
霧島
瑞鶴
霧島
霧島
瑞鶴
霧島
ワシントン
霧島
Discussion