client.py
author Eugen Sawin <sawine@me73.com>
Thu, 17 Jun 2010 23:24:41 +0200
changeset 6 9147c845cecb
permissions -rw-r--r--
Client skeleton added.
sawine@6
     1
from PySFML import sf
sawine@6
     2
import optparse
sawine@6
     3
import com
sawine@6
     4
import pickle
sawine@6
     5
import hashlib
sawine@6
     6
import SocketServer
sawine@6
     7
sawine@6
     8
class Handler(SocketServer.BaseRequestHandler):
sawine@6
     9
	"""
sawine@6
    10
	"""	
sawine@6
    11
	def handle(self):
sawine@6
    12
		data = self.request[0]
sawine@6
    13
		socket = self.request[1]
sawine@6
    14
		#print "%s wrote:" % self.client_address[0]
sawine@6
    15
		#print data
sawine@6
    16
		key_found = False
sawine@6
    17
		cell = value = None
sawine@6
    18
		for key, value in com.commands.iteritems():
sawine@6
    19
			if key in data:
sawine@6
    20
				key_found = True
sawine@6
    21
				args = data.partition(key)[2].split()				
sawine@6
    22
				if args:
sawine@6
    23
					cell, value = value[0](socket, self.client_address, self.worker, args)
sawine@6
    24
			
sawine@6
    25
		self.update(cell, value)
sawine@6
    26
			
sawine@6
    27
class Client(SocketServer.UDPServer):
sawine@6
    28
	def __init__(self, host, port, handler, options, server):
sawine@6
    29
		SocketServer.UDPServer.__init__(self, (host, port), handler)
sawine@6
    30
		self.window = sf.RenderWindow(sf.VideoMode(800, 800), "xaoc")
sawine@6
    31
		self.host = host
sawine@6
    32
		self.port = port
sawine@6
    33
		self.handler = handler
sawine@6
    34
		self.handler.update = self.update
sawine@6
    35
		self.options = options
sawine@6
    36
		self.server = server
sawine@6
    37
		self.cells = {}
sawine@6
    38
	def update(self, cell, value):
sawine@6
    39
		event = sf.Event()
sawine@6
    40
		while self.window.GetEvent(event):
sawine@6
    41
			if event.Type == sf.Event.Closed:
sawine@6
    42
				pass
sawine@6
    43
		self.window.Clear()
sawine@6
    44
		text = sf.String("x", sf.Font.GetDefaultFont(), 50)
sawine@6
    45
		for cell in self.cells.iteritems():
sawine@6
    46
			self.window.Draw(text)
sawine@6
    47
		self.window.Display()	
sawine@6
    48
	def run(self):
sawine@6
    49
		self.serve_forever()	
sawine@6
    50
	
sawine@6
    51
			
sawine@6
    52
sawine@6
    53
if __name__ == "__main__":
sawine@6
    54
	parser = optparse.OptionParser(usage="usage: %prog [options] port server_ip server_port",
sawine@6
    55
		option_list=option_list)
sawine@6
    56
	options, args = parser.parse_args()
sawine@6
    57
		
sawine@6
    58
	if len(args) > 0:
sawine@6
    59
		host = "localhost"
sawine@6
    60
		port = int(args[0])	
sawine@6
    61
		server = (int(args[1]), int(args[2]))			
sawine@6
    62
		client = Client(host, port, Handler, options, server)
sawine@6
    63
		client.run()
sawine@6
    64