SocketServer.UDPServerの使い方

SocketServer.UDPServerを利用する時に定義する自前のハンドラ(SocketServer.DatagramRequestHandler派生)内で、データの取得にはまったのでメモ。ハンドラ内でself.requestからデータを取得する方法がTCPServerとは違う。

#!/usr/bin/env python
# coding: utf-8

import SocketServer

class MyHandler( SocketServer.DatagramRequestHandler ) :
	def handle( self ) :
		# データとソケットの取得
		# data = self.request.recv(1024)  # TCPServerの場合
		data , socket = self.request      # UDPServerの場合

		# なんか処理

def run() :
	server = SocketServer.UDPServer(('',33333),MyHandler)
	server.allow_reuse_address = True	# ソケットを再使用できるようにする。
	server.serve_forever()


# main
run()