Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

pyeventでecho

使い方わかんないとか言う人向けサンプル
(書きなぐりです)

import event
import socket

def read(sock):
  msg = sock.recv(1024)
  sock.send(msg)
  event.read(sock.fileno(), read, sock).add()

def accept(sock):
  conn, addr = sock.accept()
  event.read(conn.fileno(), read, conn).add()
  event.read(server_sock.fileno(), accept, sock)


server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_sock.bind(('localhost' , 6000))
server_sock.listen(10)
event.read(server_sock.fileno(), accept, server_sock)

while True:
  event.dispatch()

ノンブロッキングじゃないけど通知だけのサンプル。
signalとtimerはとりあえずスルー。
扱いがONESHOTなのかな。とりあえずイベント登録毎回する。

毎回登録してイベントを待つとクソ遅いので本来ならば

  1. まずノンブロッキングにする
  2. とりあえずreadとかやって返り値の番号を見てダメならイベント登録する

とかにする