예제 #1
0
 def __init__(self):
     self.new_clients = [
     ]  #list of new sockets of which the user id is not known
     self.logged_name2sock = {}  #dictionary mapping username to socket
     self.logged_sock2name = {}  # dict mapping socket to user name
     self.all_sockets = []
     self.group = grp.Group()
     self.players = p.Players()
     #start server
     self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.server.bind(SERVER)
     self.server.listen(5)
     self.all_sockets.append(self.server)
     #initialize past chat indices
     self.indices = {}
     # sonnet
     # self.sonnet_f = open('AllSonnets.txt.idx', 'rb')
     # self.sonnet = pkl.load(self.sonnet_f)
     # self.sonnet_f.close()
     self.sonnet = indexer.PIndex("AllSonnets.txt")
     self.gaming_players = []  #record the gaming players
     self.wolves = grp.Group()  #add the wolves to a seperate chat group
     self.wg = []
     self.dead = []
     self.newkilled = ''
     self.newpoisoned = ''
     self.poll = {}
     self.pollNumber = 0
     self.values = []
 def __init__(self):
     self.new_clients = []  # list of new sockets of which the user id is not known
     self.logged_name2sock = {}  # dictionary mapping username to socket
     self.logged_sock2name = {}  # dict mapping socket to user name
     self.all_sockets = []
     self.group = grp.Group()
     # start server
     self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.server.bind(SERVER)
     self.server.listen(5)
     self.all_sockets.append(self.server)
     # initialize past chat indices
     self.indices = {}
     # sonnet
     self.sonnet = indexer.PIndex("AllSonnets.txt")
예제 #3
0
 def __init__(self):
     self.new_clients = [] #list of new sockets of which the user id is not known
     self.logged_name2sock = {} #dictionary mapping username to socket
     self.logged_sock2name = {} # dict mapping socket to user name
     self.all_sockets = []
     self.group = grp.Group()
     #tictactoe incorporation
     self.ttt = t.TicTacToe()
     #start server
     self.server=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.server.bind(SERVER)
     self.server.listen(5)
     self.all_sockets.append(self.server)
     #initialize past chat indices
     self.indices={}
     # sonnet
     # self.sonnet_f = open('AllSonnets.txt.idx', 'rb')
     # self.sonnet = pkl.load(self.sonnet_f)
     # self.sonnet_f.close()
     self.sonnet = indexer.PIndex("AllSonnets.txt")
     self.public_key1 = 71031
     self.public_key2 = 20573
예제 #4
0
 def __init__(self):
     self.new_clients = [] #list of new sockets of which the user id is not known
     self.logged_name2sock = {} #dictionary mapping username to socket
     self.logged_sock2name = {} # dict mapping socket to user name
     self.all_sockets = []
     self.group = grp.Group()
     #start server
     self.server=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     self.server.bind(SERVER)
     self.server.listen(5)
     self.all_sockets.append(self.server)
     #initialize past chat indices
     self.indices={}
     #sonnet indexing
     self.sonnet = indexer.PIndex("AllSonnets.txt")
     #render stuff
     self.conf     = None
     self.height   = None
     self.rendered = None
     self.starter  = None
     self.pieces   = None
예제 #5
0
 def __init__(self):
     self.new_clients = []  # list of new sockets of which the user id is not known
     self.logged_name2sock = {}  # dictionary mapping username to socket
     self.logged_sock2name = {}  # dict mapping socket to user name
     self.all_sockets = []
     self.group = grp.Group()
     # start server
     self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.server.bind(SERVER)
     self.server.listen(5)
     self.all_sockets.append(self.server)
     # initialize past chat indices, TO store chat history.
     # indices will assigned later when there is user logged in
     self.indices = {}
     # sonnet
     self.sonnet = indexer.PIndex("AllSonnets.txt")
     self.game2_white_matrix = []
     self.game2_black_matrix = []
     self.game2_color_matrix = [[0]*19 for i in range(19)]
     self.game2_state = ''
     self.player1 = ''
     self.player2 = ''
     self.initialize_matrix()
예제 #6
0
    def handle_msg(self, from_sock):
        #read msg code
        msg = myrecv(from_sock)
        if len(msg) > 0:
            #==============================================================================
            # handle connect request
            #==============================================================================
            msg = json.loads(msg)
            if msg["action"] == "connect":
                to_name = msg["target"]
                from_name = self.logged_sock2name[from_sock]
                if to_name == from_name:
                    msg = json.dumps({"action": "connect", "status": "self"})
                # connect to the peer
                elif self.group.is_member(to_name):
                    to_sock = self.logged_name2sock[to_name]
                    self.group.connect(from_name, to_name)
                    the_guys = self.group.list_me(from_name)
                    msg = json.dumps({
                        "action": "connect",
                        "status": "success"
                    })
                    for g in the_guys[1:]:
                        to_sock = self.logged_name2sock[g]
                        mysend(
                            to_sock,
                            json.dumps({
                                "action": "connect",
                                "status": "request",
                                "from": from_name
                            }))
                else:
                    msg = json.dumps({
                        "action": "connect",
                        "status": "no-user"
                    })
                mysend(from_sock, msg)
#==============================================================================
# handle messeage exchange: one peer for now. will need multicast later
#==============================================================================
            elif msg["action"] == "exchange":
                from_name = self.logged_sock2name[from_sock]
                #said = msg["from"]+msg["message"]
                said = text_proc(msg["message"], from_name)
                self.indices[from_name].add_msg_and_index(said)
                the_guys = self.group.list_me(from_name)
                for g in the_guys[1:]:
                    to_sock = self.logged_name2sock[g]
                    # IMPLEMENTATION
                    # ---- start your code ---- #
                    self.indices[g].add_msg_and_index(said)
                    mysend(
                        to_sock,
                        json.dumps({
                            'action': 'exchange',
                            'from': msg['from'],
                            'message': msg["message"]
                        }))

                    # ---- end of your code --- #
#==============================================================================
#                 listing available peers
#==============================================================================
            elif msg["action"] == "list":
                from_name = self.logged_sock2name[from_sock]
                # IMPLEMENTATION
                # ---- start your code ---- #

                msg = self.group.list_all(from_name)

                # ---- end of your code --- #
                mysend(from_sock, json.dumps({
                    "action": "list",
                    "results": msg
                }))
#==============================================================================
#             retrieve a sonnet
#==============================================================================
            elif msg["action"] == "poem":
                # IMPLEMENTATION
                # ---- start your code ---- #
                sonnets = indexer.PIndex("AllSonnets.txt")
                index = msg['target']
                poem_list = sonnets.get_poem(int(index))
                poem = '\n'.join(poem_list)
                print('here:\n', poem)

                # ---- end of your code --- #
                mysend(from_sock,
                       json.dumps({
                           "action": "poem",
                           "results": poem
                       }))
#==============================================================================
#                 time
#==============================================================================
            elif msg["action"] == "time":
                ctime = time.strftime('%d.%m.%y,%H:%M', time.localtime())
                mysend(from_sock,
                       json.dumps({
                           "action": "time",
                           "results": ctime
                       }))
#==============================================================================
#                 search
#==============================================================================
            elif msg["action"] == "search":
                # IMPLEMENTATION
                # ---- start your code ---- #
                term = msg['target']
                from_name = self.logged_sock2name[from_sock]
                rslt = self.indices[from_name].search(term)
                search_rslt = str([i[1] for i in rslt])
                print('server side search: ' + search_rslt)

                # ---- end of your code --- #
                mysend(
                    from_sock,
                    json.dumps({
                        "action": "search",
                        "results": search_rslt
                    }))
#==============================================================================
# the "from" guy has had enough (talking to "to")!
#==============================================================================
            elif msg["action"] == "disconnect":
                from_name = self.logged_sock2name[from_sock]
                the_guys = self.group.list_me(from_name)
                self.group.disconnect(from_name)
                the_guys.remove(from_name)
                if len(the_guys) == 1:  # only one left
                    g = the_guys.pop()
                    to_sock = self.logged_name2sock[g]
                    mysend(to_sock, json.dumps({"action": "disconnect"}))
#==============================================================================
#                 the "from" guy really, really has had enough
#==============================================================================

        else:
            #client died unexpectedly
            self.logout(from_sock)