From: Adriana Draghici Date: Tue, 19 Jan 2010 14:53:18 +0000 (+0200) Subject: Server - draft X-Git-Tag: getopt_long~215 X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=1d147cf6532e38d5295d2a57a045b61abbe7831d;p=cs-p2p-next.git Server - draft --- diff --git a/server/Server.py b/server/Server.py index c45b810..b1a1f70 100644 --- a/server/Server.py +++ b/server/Server.py @@ -5,12 +5,20 @@ import pickle from daemon import Daemon -# TODO: transmitere dictionar -# diferentiere pe tipuri de mesaje - +PORT = 10005 +HOST = "127.0.0.1" BUFFER_SIZE = 1024 +states = {} # keeps track of what kind of message was previously receveid on a socket. + +WAITING_MSG_TYPE = 0 +WAITING_CONFIG_DATA = 2 +WAITING_START_DATA = 3 +WAITING_STOP_DATA = 4 +WAITING_STATUS_DATA = 5 + + def recv_pickled_data(clientsock): # while chunk: # chunk = clientsock.recv(BUFFER_SIZE) @@ -23,11 +31,43 @@ def recv_pickled_data(clientsock): def doServer(): #os.spawnvp(os.P_NOWAIT,"/usr/bin/transmission",[]) serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - serversocket.bind(("127.0.0.1", 10005)); + serversocket.bind((HOST, PORT)); serversocket.listen(10) #max 10 requests while(1): (clientsock, address) = serversocket.accept(); + + """ draft + if clientsock not in states: + states[clientsock] = WAITING_MSG_TYPE; + + if states[clientsock] == WAITING_MSG_TYPE: + msg = clientsock.recv(BUFFER_SIZE) + + if msg == Util.CONFIGURE_MSG: + states[clientsock] = WAITING_CONFIG_DATA; + + else if msg == Util.START_MSG: + states[clientsock] = WAITING_CONFIG_DATA; + + else if msg == Util.STOP_MSG: + states[clientsock] = WAITING_CONFIG_DATA; + + else if msg == Util.STATUS_MSG: + states[clientsock] = WAITING_CONFIG_DATA; + + else + clientsock.send("error: wrong message type " + msg) + + else: + if states[clientsock] == WAITING_CONFIG_DATA: + config = recv_pickled_data(clientsock) + + + states[clientsock] = WAITING_MSG_TYPE + """ + + #clientsock.recv(BUFFER_SIZE) recv_pickled_data(clientsock) clientsock.send("ACK")