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)
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
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) '''
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
def recv(self): if not self.connected: return data = netstream.read(self.sock) return data
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:
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)
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
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):
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()