root/python/stackless/udp_server.py

リビジョン 43, 0.7 kB (コミッタ: sgk, コミット時期: 1 年 前)

見た目

  • svn:executable 属性の設定値: *
Line 
1 #!/usr/bin/env python
2 #vim:fileencoding=utf-8
3
4 import stackless
5 import sys, stacklesssocket as socket
6 sys.modules["socket"] = socket
7
8 def udp_server(socket_address, handler):
9   sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
10   sock.bind(socket_address)
11   while True:
12     (data, address) = sock.recvfrom(8192)
13     stackless.tasklet(handler)(sock, data, address)
14
15 def udp_handler(sock, data, address):
16   import time
17   print '%.6f %r %r' % (time.time(), data, address)
18   sock.sendto(data, address)    # エコーバック
19   #XXX 時間がかかる処理を行う場合は、適宜の次の行をはさむ。
20   # stackless.schedule()
21
22 def test():
23   stackless.tasklet(udp_server)(('0.0.0.0', 2000), udp_handler)
24   stackless.run()
25
26 if __name__ == '__main__':
27   test()
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。