Прикреплённый файл «2014-03-28-ubclient.py»

Загрузка

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 Наблюдаельный клиент для боулинга
   5 '''
   6 
   7 import sys, socket, pygame, select
   8 CPORT=2015
   9 SPORT=2014
  10 MAXBUF=16384
  11 
  12 def init_server(port):
  13     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  14     sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  15     sock.bind(('', port))
  16     check = select.poll()
  17     check.register(sock,select.POLLIN|select.POLLPRI)
  18     return sock, check
  19 
  20 def poll_command(poll,sock,key):
  21     while True:
  22         poll.poll(None)
  23         cmd, addr = sock.recvfrom(MAXBUF)
  24         if cmd.startswith(key):
  25             return cmd,addr
  26 
  27 pygame.init()
  28 size = 800,600
  29 screen = pygame.display.set_mode(size)
  30 again = True
  31 Sock, Check = init_server(CPORT)
  32 pygame.time.set_timer(pygame.USEREVENT, 20)
  33 pygame.time.set_timer(pygame.USEREVENT+1, 2000)
  34 whl,(server,servport)=poll_command(Check,Sock,"BOWLING")
  35 print whl, server
  36 w,h,length=[int(c) for c in whl.split()[1:]]
  37 image=""
  38 while again:
  39     conns = Check.poll(1)
  40     for c in conns:
  41         cmd, addr = Sock.recvfrom(MAXBUF)
  42         if cmd.startswith("DATA"):
  43             image = cmd[4:]
  44         elif cmd.startswith("FLOW"):
  45             image += cmd[4:]
  46             if len(image)>=length:
  47                 screen.blit(pygame.image.frombuffer(image, (w,h), 'RGB'),(0,0))
  48                 image = ""
  49         print cmd[:4], addr,
  50     for event in [pygame.event.wait()]+pygame.event.get():
  51         if event.type == pygame.QUIT:
  52             again = False
  53         # Смена игрового времени
  54         elif event.type == pygame.USEREVENT+1:
  55             Sock.sendto("GET",(server,SPORT))
  56     pygame.display.flip()
  57 pygame.quit()

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.