def OnSend( self ): global queue if self == sock: for i in range( 5 ): if len( self.curlst ) < 5: if len( queue ) > 0: try: cur = queue[0] queue = queue[1:] bstr = b'<CVC><ValidateCode>' + cur[1] + b'<UserName>' + cur[0] + b'<UserIP>' + cur[2] + b'\n' b = self.send( bstr ) key = str( cur[0], 'gbk' ) if hasattr( self.curlst, key ): # 如果已经存在之前的注册数据,则让前一个数据失败返回 v = self.curlst[ key ] emb.callback( v[3], v[4], [5], 0 ) self.curlst[ key ] = cur # print( 'OnSend (', b, ')', bstr ) except Exception as x: print( x )
def OnRecv( self, buf ): # print( 'OnRecv (', len( buf ), ')', buf ) if len( buf ) == 0: if len( self.curlst ) > 0: # 当前所有处理中的请求都挂掉。。。 for v in self.curlst: try: emb.callback( v[3], v[4], [5], 0 ) except: pass self.clear() return True else: # 处理返回信息串,并选择处理当前玩家 self.strbuf += buf lines = self.strbuf.split( b'\n' ) if buf[-1] != b'\n': # 如果当前行没有结束符,则继续等待。。。 self.strbuf = lines.pop( -1 ) for line in lines: result = False name = False limit = b'0' uid = False if b'<ValidateResult>' == line[:16]: result = line[16:].split( b'<', 1 )[0] sp1 = 16+len( result ) if b'<UserName>' == line[sp1:sp1+10]: name = line[sp1+10:].split( b'<', 1 )[0] sp2 = sp1 + 10 + len( name ) if b'<Result>' == line[sp2:sp2+8]: limit = line[sp2+8:sp2+9] sp3 = sp2 + 9 if b'0' != limit and b'<PersonalID>' == line[sp3:sp3+12]: uid = line[sp3+12:].split( b'<', 1 )[0] print( sp1, sp2, result, name, limit, uid ) key = str( name, 'gbk' ) try: v = self.curlst[key] del self.curlst[key] emb.callback( v[3], v[4], v[5], result == b'TRUE' ) except Exception as x: print( '发现一个未请求验证结果', x ) return False
def CheckAccount( account, password, ip, func, dnid, memptr ): emb.callback( func, dnid, memptr, 1, "alskdid" )