Exemple #1
0
    def receiveServer(dt):
        global connected, serialID
        if not connected:
            return
        data = netstream.read(sock)
        if data == netstream.TIMEOUT or data == netstream.CLOSED or data == netstream.EMPTY:
            return

    #客户端SID
        if 'sid' in data:
            serialID = data['sid']

        if 'notice_content' in data:
            import game_controller
            game_controller.showContent(
                data['notice_content'])  #showContent is from game_controller

        if 'sign_up_result' in data:
            fix_sign_up_result(data)

        if 'sign_in_result' in data:
            fix_sign_in_result(data)

        if 're_game_result' in data:
            fix_game_result(data)
Exemple #2
0
    def receiveServer(dt):
        global connected, serialID
        if not connected:
            return
        data = netstream.read(sock)
        if data == netstream.TIMEOUT or data == netstream.CLOSED or data == netstream.EMPTY:
            return

    #客户端SID
        if 'sid' in data:
            serialID = data['sid']

        if 'notice_content' in data:
            import game_controller
            game_controller.showContent(
                data['notice_content'])  #showContent is from game_controller

        if 'authenResult' in data:
            import game_controller
            if data['authenResult'] == False:
                game_controller.authenticationFailed()
            else:
                game_controller.authenticationSucceed()

        if 'signUpSucceed' in data:
            import game_controller
            if data['signUpSucceed'] == False:
                game_controller.signUpFailed()
            else:
                game_controller.signUpSucceed()

        if 'scoreList' in data:
            import game_controller
            game_controller.setScoreListOnline(data['scoreList'])
 def _recv(self):
     data = netstream.read(self.sock)
     if data == netstream.TIMEOUT:
         return {'code': 7}
     elif data == netstream.EMPTY or data == netstream.CLOSED:
         return None
     else:
         return data
Exemple #4
0
 def receiveServer(dt):
     global connected, serialID
     if not connected:
         return
     data = netstream.read(sock)
     if data == netstream.TIMEOUT or data == netstream.CLOSED or data == netstream.EMPTY:
         return
     #客户端SID
     if 'sid' in data:
         serialID = data['sid']
     else:
         user.userDataProcess(data)
     '''
Exemple #5
0
    def receiveServer(dt):
        global connected, serialID
        if not connected:
            return
        data = netstream.read(sock)
        if data == netstream.TIMEOUT or data == netstream.CLOSED or data == netstream.EMPTY:
            return

    #客户端SID
        if 'sid' in data:
            serialID = data['sid']

        if 'notice_content' in data:
            import game_controller
            game_controller.showContent(
                data['notice_content'])  #showContent is from game_controller
        if 'response' in data:
            import game_controller
            game_controller.showContent(
                data['response'])  #showContent is from game_controller
            if data['response'] == u"登录成功":
                import game_controller
                game_controller.login_success()
        if 'score' in data:
            score = data['score']
            users = data['users']
            time_list = data['time']
            print score
            import game_controller
            game_controller.setRank1Scores(game_controller.scorerank,
                                           int(score[0].encode("utf-8")))
            game_controller.setRank2Scores(game_controller.scorerank,
                                           int(score[1].encode("utf-8")))
            game_controller.setRank3Scores(game_controller.scorerank,
                                           int(score[2].encode("utf-8")))

            game_controller.setRank1Name(users[0])
            game_controller.setRank2Name(users[1])
            game_controller.setRank3Name(users[2])
            game_controller.setRank1Time(game_controller.scorerank,
                                         int(time_list[0][0].encode("utf-8")))
            game_controller.setRank2Time(game_controller.scorerank,
                                         int(time_list[1][0].encode("utf-8")))
            game_controller.setRank3Time(game_controller.scorerank,
                                         int(time_list[2][0].encode("utf-8")))
 def process(self, timeout):
     rList, wList, eList = select.select(self.inputs, [], [], timeout)    # 如果不使用TimeScheduler,可以去掉timeout参数,这样会阻塞到inputs中有socket变成ready
     for aSocket in rList:
         if aSocket is self.welcomeSocket:
             # accept
             connectSocket, addr = self.welcomeSocket.accept()
             self.inputs.append(connectSocket)
             print 'FlappyBirdServer > get connection from: ' + str(connectSocket.getpeername())
             # test client
             sendData = {}
             sendData['content'] = "send from server to client"
             netstream.send(connectSocket, sendData)
         else:
             # receive data
             recvData = netstream.read(aSocket)
             # socket关闭
             if recvData == netstream.CLOSED:
                 print 'FlappyBirdServer > disconnect: ' + str(aSocket.getpeername())
                 self.inputs.remove(aSocket)
             # 收到request
             else:
                 # test client
                 print "receive from client"
     return
Exemple #7
0
 def recv(self):
     if not self.connected:
         return
     data = netstream.read(self.sock)
     return data
Exemple #8
0
                inputs.append(connection)  #将socket加入监听列表中中
                sendData = {}
                sendData['sid'] = sid
                netstream.send(connection, sendData)

                # 记录每个连接的属性
                cInfo = {}
                cInfo['connection'] = connection
                cInfo['addr'] = str(addr)
                cInfo['ready'] = False
                onlineUser[sid] = cInfo
                print(str(onlineUser))
                sid += 1

            else:  # 接收通讯数据
                recvData = netstream.read(r)
                # print 'Read data from ' + str(r.getpeername()) + '\tdata is: ' + str(recvData)
                # 客户端socket关闭
                if recvData == netstream.CLOSED or recvData == netstream.TIMEOUT:
                    if r.getpeername() not in disconnected_list:
                        print str(r.getpeername()) + 'disconnected'
                        disconnected_list.append(
                            r.getpeername())  #拓展断开连接的客户端列表

                else:  # 根据收到的request发送response
                    #公告
                    netstream.send(onlineUser[recvData['sid']]['connection'],
                                   processData.processData(recvData))
                    break
                    '''
					if 'notice' in recvData:
Exemple #9
0
    def receiveServer(dt):
        global connected, serialID, isRead
        # logInState = netstream.getLogInState()
        if not connected:
            return
        data = netstream.read(sock)
        if data == netstream.TIMEOUT or data == netstream.CLOSED or data == netstream.EMPTY:
            return

        #客户端SID
        if 'sid' in data:
            # print ('sid')
            import game_controller
            serialID = data['sid']

        # 用于broadcast
        if 'notice_content' in data:
            import game_controller
            game_controller.showContent(
                data['notice_content'])  #show+Content is from game_controller

        # 根据Server返回信息调用showLogInMessage显示对应信息
        if 'error1' in data:
            print data['error1']
            logInState = 1
            import game_controller
            game_controller.showLogInMessange(logInState)

        if 'create' in data:
            print data['create']
            import game_controller
            logInState = 2
            game_controller.showLogInMessange(logInState)

        # if 'error1-1' in data:
        #     print data['error1-1']
        #     logInState = 3
        #     import game_controller
        #     game_controller.showLogInMessange(logInState)

        if 'error2' in data:
            print data['error2']
            logInState = 6
            import game_controller
            game_controller.showLogInMessange(logInState)

        if 'error2-1' in data:
            print data['error2-1']
            logInState = 7
            import game_controller
            game_controller.showLogInMessange(logInState)

        if 'error3' in data:
            print data['error3']
            logInState = 8
            import game_controller
            game_controller.showLogInMessange(logInState)

        if 'successfully' in data:
            print data['successfully']
            logInState = 9
            import game_controller
            game_controller.showLogInMessange(logInState)

        if 'log_out' in data:
            print("log_out")
            import game_controller
            game_controller.doLogOut()

        if 'championAccount' in data:
            print("championAccount")
            import game_controller
            name = data['championAccount']
            score = data['championScore']
            game_controller.receive_champion(name, score)
Exemple #10
0
         pipeData[1] = pipeRandomHeight[1]
         pipeData[2] = pipeRandomHeight[2]
         sendData['pipe'] = pipeData
         sendData['start'] = 1
         sendData['size'] = battleSize
         # 给user发送
         for i in range(len(user)):
             sendData['no'] = i
             try:
                 netstream.send(user[i], sendData)
                 print 'send data to '+str(user[i].getpeername())+'\tdata is: '+str(sendData)
             except Exception:
                 print 'Error: 游戏开始,给user'+i+'发送'
 else:
     # receive data
     recvData = netstream.read(r)
     print 'Read data from '+str(r.getpeername())+'\tdata is: '+str(recvData)
     # socket关闭
     if recvData == netstream.CLOSED:
         print str(r.getpeername())+'disconnected'
         inputs.remove(r)
         user.remove(r)
     else:   # 根据收到的request发送response
         # client请求pipeRandomHeight
         if 'pipe' in recvData:
             index = recvData['pipe']
              # list里没有的话需要广播pipe信息,list里一旦添加就会广播,所以list里有的话说明已经广播过了
             if index >= len(pipeRandomHeight):
                 sendData = {}
                 pipeData = {}
                 pipeRandomHeight.append(random.randrange(0, 4))
 def _recv(self):
     data = netstream.read(self.sock)
     if data == netstream.TIMEOUT or data == netstream.CLOSED or data == netstream.EMPTY:
         return None
     else:
         return data
Exemple #12
0
    send_data=get_send_data()
    send_data['gaming_data']=value
    netstream.send(sock,send_data)
def send_game_over_data(value):
    send_data=get_send_data()
    send_data['game_over_data']=value
    netstream.send(sock,send_data)

host = "172.18.158.159"
port = 9234
sock = socket.socket()
sock.connect((host, port))

time.sleep(1)

recvData = netstream.read(sock)
if 'sid' in recvData:
    serialID = recvData['sid']

request_notice()

random.seed(time.time())

final_points = random.randint(0, 20)
current_game_time = 0
g_score = 0
player = 'visitor'

time.sleep(1)

for g_score in range(0, final_points):
Exemple #13
0
    def requestHandle(self):
        while self.runRequestHandle and self.inputs:
            try:
                rs, ws, es = select.select(self.inputs, [], [], 2)
                for r in rs:
                    self.lock.acquire()
                    if self.runRequestHandle and r is self.sock:
                        # accept
                        connection, addr = self.sock.accept()
                        self.logger.log('Got connection from' + str(addr) +
                                        " sid: {}".format(self.sid))
                        self.inputs.append(connection)

                        sendData = {}
                        sendData['sid'] = self.sid
                        netstream.send(connection, sendData)

                        cInfo = {}
                        cInfo['connection'] = connection
                        cInfo['addr'] = addr
                        cInfo['uid'] = -1  # -1 for not initalized
                        cInfo['startTime'] = time.time()
                        cInfo['timeStamp'] = time.time()
                        self.connections[str(self.sid)] = cInfo

                        # set timer to moniter session timeout
                        self._updateTimer(self.sid)

                        self.sid += 1
                    else:
                        # receive data
                        recvData = netstream.read(r)

                        if recvData == netstream.CLOSED or recvData == netstream.TIMEOUT:  # socket关闭
                            pass

                        else:  # 根据收到的request发送response
                            usid = recvData['sid']
                            usid = str(usid)

                            if usid not in self.connections:  # invalid usid
                                netstream.send(r, {'code': 7})  # 7 for timeout
                                continue

                            # update timeout
                            self._updateTimer(usid)
                            self.connections[usid]['timeStamp'] = time.time()

                            # for registration
                            if recvData['type'] == 0:
                                self.registration(recvData['username'],
                                                  recvData['password'], usid)

                            # for login
                            elif recvData['type'] == 1:
                                self.login(recvData['username'],
                                           recvData['password'], usid)

                            # for initialize session
                            elif recvData['type'] == 2:
                                self.initalSession(recvData['token'], usid)

                            # for request notice
                            elif recvData['type'] == 5:
                                self.sendNotice(usid)

                            # for update time stamp
                            elif recvData['type'] == 6:
                                self.updateTimeStamp(usid)

                            # for getting leaderboard
                            elif recvData['type'] == 8:
                                self.getLeaderboard(recvData['by'], usid)

                            # following request require session initalized
                            elif self.connections[usid][
                                    'uid'] == -1:  # not initialized session
                                netstream.send(
                                    self.connections[usid]['connection'],
                                    {"code": 0})  # 0 for not initialized

                            else:  # session initialized
                                # for logout
                                if recvData['type'] == 3:
                                    self.logout(recvData['token'], usid)

                                # for update states
                                elif recvData['type'] == 4:
                                    self.updateData(recvData['token'],
                                                    recvData['score'],
                                                    recvData['time'],
                                                    recvData['num'], usid)

                                # for getting user information
                                elif recvData['type'] == 7:
                                    self.getUserInfo(recvData['token'], usid)

                    self.lock.release()

            except Exception:
                self.lock.release()
                self.logger.log(traceback.format_exc())

        self.sock.close()
        print("Server terminated.")
''' test client'''
import socket

import sys
sys.path.append("..");sys.path.append('.')
import netstream

s = socket.socket()
host = '127.0.0.1'
port = 1234
s.connect((host, port))

netstream.read(s)

sendData = {}
sendData['content'] = "send from client to server"
netstream.send(s, sendData)

s.close()