wxPython 客户端登录流程的拟定

登录函数的初步实现:

def Login(self, event):
    if (self.datacenter._netstat == 0):
        lib.MyDialog(u"网路状态",u"网路异常,请检查网络...")
    else:
        lib.udpFindCcu(self.datacenter, self.devdb.getFindCcu())
        if (bool(self.datacenter.ccuArray)):
            self.login_zk_id = self.TextCtrl_login_zkid.GetValue()
            if (self.datacenter.ccuArray.has_key(self.login_zk_id)):
                lib.MyDialog(u"登录方式",u"已经搜索到对应主机开始本地登录")
            else:
                lib.MyDialog(u"登录方式",u"未搜索到对应主机开始远程登录")
        else:
            lib.MyDialog(u"登录方式",u"未搜索到主机直接远程登录")

登录函数的具体实现:

    def Login(self, event):
        if self.cpu["Handler"]._login:
            return -1
        self.datacenter = self.cpu["Handler"]
        self.devdb = self.cpu["DB"]

        self.login_zk_id = self.cpu["Button"]["TextCtrl_login_zkid"].GetValue()              #中控编号
        self.login_usr = self.cpu["Button"]["TextCtrl_login_user"].GetValue()                #用户账号
        self.cpu["Handler"]._login_account = str(self.login_usr)
        self.login_pwd = self.cpu["Button"]["TextCtrl_login_pwd"].GetValue()                 #用户密码
        if (self.datacenter._netstat == 0):
            log.info(u"网路异常,开始本地发现"+self.login_zk_id)
            lib.udpFindCcu(self.cpu)
            self.login_zk_id = self.cpu["Button"]["TextCtrl_login_zkid"].GetValue()
            if (bool(self.datacenter.ccuArray)):
                if (self.datacenter.ccuArray.has_key(self.login_zk_id)):
                    log.info(u"搜索到对应主机,开始本地登录")
                    for key in self.datacenter.ccuArray:
                        if (self.login_zk_id == key):
                            self.tcpClient = lib.TCPClient(self.cpu)
                            try:
                                self.tcpClient.connect(self.datacenter.ccuArray[key], self.datacenter.tcpServerPort)
                            except socket.error, e:
                                log.info(self.datacenter.ccuArray[key])
                                log.info(str(self.datacenter.tcpServerPort))
                                log.error("LoginMethodsRemote() occur error!\nFailed to connect to server @ip: "+self.datacenter.ccuArray[key]["ip"]+" | port: "+str(self.datacenter.tcpServerPort)+"\nThe error is"+str(e))
                                self.cpu["Button"]["loginBtn"].SetToggle(False)
                            else:
                                self.cpu["tcpClient"] = self.tcpClient
                                self.socket_recv = threading.Thread(target=self.tcpClient.recv, args=())
                                self.socket_recv.start()
                                self.tcpClient.send(lib.objLogin(self.cpu, self.login_zk_id, self.login_usr, self.login_pwd, 0))
                                self.tcpClient.loginDataSave(key, self.datacenter.ccuArray[key], self.datacenter.tcpServerPort)
                                break
            else:
                lib.MyDialog(u"网路状态",u"网路异常,请检查网络...")
        else:
            lib.udpFindCcu(self.cpu)
            self.login_zk_id = self.cpu["Button"]["TextCtrl_login_zkid"].GetValue()
            log.info(u"登录的中控编号"+self.login_zk_id)
            log.info(u"搜索中控列表"+str(self.datacenter.ccuArray))
            if (bool(self.datacenter.ccuArray)):
                if (self.datacenter.ccuArray.has_key(self.login_zk_id)):
                    log.info(u"搜索到对应主机,开始本地登录")
                    for key in self.datacenter.ccuArray:
                        if (self.login_zk_id == key):
                            self.tcpClient = lib.TCPClient(self.cpu)
                            try:
                                self.tcpClient.connect(self.datacenter.ccuArray[key], self.datacenter.tcpServerPort)
                            except socket.error, e:
                                log.info(self.datacenter.ccuArray[key])
                                log.info(str(self.datacenter.tcpServerPort))
                                log.error("LoginMethodsRemote() occur error!\nFailed to connect to server @ip: "+str(self.datacenter.ccuArray[key]["ip"])+" | port: "+str(self.datacenter.tcpServerPort)+"\nThe error is"+str(e))
                                self.cpu["Button"]["loginBtn"].SetToggle(False)
                            else:
                                self.cpu["tcpClient"] = self.tcpClient
                                self.socket_recv = threading.Thread(target=self.tcpClient.recv, args=())
                                self.socket_recv.start()
                                self.tcpClient.send(lib.objLogin(self.cpu, self.login_zk_id, self.login_usr, self.login_pwd, 0))
                                self.tcpClient.loginDataSave(key, self.datacenter.ccuArray[key], self.datacenter.tcpServerPort)
                                break
                else:
                    log.info(u"未搜索到对应主机,开始远程登录")
                    self.tcpClient = lib.TCPClient(self.cpu)
                    try:
                        self.tcpClient.connect(self.datacenter.tcpCloudIP, self.datacenter.tcpCloudPort)
                    except socket.error, e:
                        log.error("LoginMethodsRemote() occur error!\nFailed to connect to server @ip: "+self.datacenter.tcpCloudIP+" | port: "+self.datacenter.tcpCloudPort+"\nThe error is"+str(e))
                        self.cpu["Button"]["loginBtn"].SetToggle(False)
                    else:
                        self.cpu["tcpClient"] = self.tcpClient
                        self.socket_recv = threading.Thread(target=self.tcpClient.recv, args=())
                        self.socket_recv.start()
                        self.tcpClient.send(lib.objLogin(self.cpu, self.login_zk_id, self.login_usr, self.login_pwd, 0))
                        self.tcpClient.loginDataSave(self.login_zk_id, self.datacenter.tcpCloudIP, self.datacenter.tcpCloudPort)
            else:
                log.info(u"未搜索到主机,直接远程登录")
                self.tcpClient = lib.TCPClient(self.cpu)
                try:
                    self.tcpClient.connect(self.datacenter.tcpCloudIP, self.datacenter.tcpCloudPort)
                except socket.error, e:
                    log.error("LoginMethodsRemote() occur error!\nFailed to connect to server @ip: "+self.datacenter.tcpCloudIP+" | port: "+self.datacenter.tcpCloudPort+"\nThe error is"+str(e))
                    self.cpu["Button"]["loginBtn"].SetToggle(False)
                else:
                    self.cpu["tcpClient"] = self.tcpClient
                    self.socket_recv = threading.Thread(target=self.tcpClient.recv, args=())
                    self.socket_recv.start()
                    self.tcpClient.send(lib.objLogin(self.cpu, self.login_zk_id, self.login_usr, self.login_pwd, 0))
                    self.tcpClient.loginDataSave(self.login_zk_id, self.datacenter.tcpCloudIP, self.datacenter.tcpCloudPort)
时间: 2024-08-06 10:29:15

wxPython 客户端登录流程的拟定的相关文章

CAS Java客户端登录相关过滤器的处理流程

首先了解一下CAS登录原理: CAS结构中一般包含CAS服务器.应用服务器.客户端三个部分.客户端向应用服务器发出请求,由于未登录,会被跳转到CAS服务器登录.登录成功后跳转回应用服务器的登录前的URL,但是CAS服务器会给URL加上一个ticket参数.应用服务器拿着ticket去CAS服务器验证,验证成功后即加入一个session表示已登录,以后就不用再次登录了. 在web.xml配置中,AuthenticationFilter和TicketValidationFilter两个过滤器是负责处

登录流程-1

登录流程-1 (服务器是一个账号然后可以选择多个区,类似lol,其实就是把服务器列表发给客户端,账号就一个数据库,然后不同的服务器部署在不同的服务器上就是ip不同) e_msg_c_as_register_req e_msg_c_as_login_req 返回服务器列表,注意客户端得到的服务器列表的id数组,数据有相应id对于的ip地址,而不是真正的ip数组 e_msg_c_as_enter_area_req 进入某个选区,这个过程服务器有点复杂,首先AS产生token发给GS,GS保存toke

呕心沥血的java复杂项目(包括自定义应用层协议、CS多线程、多客户端登录、上下线提醒等等)

建议大家先下源代码,导入到Eclipse,然后运行服务器和多个客户端,这样有个不错的体会.下载地址:http://download.csdn.net/detail/woshiwanghao_hi/7320927. 首先来看下整个系统的文件架构图: 系统是个基于UDP的聊天室,因为不能保持所有用户和聊天室的持续连接.同时为了保持数据传输的可靠性,就需要自定义应用层协议了. 程序大概的一个流程如下: 1.启动服务器,点击"start service",之后服务器及开始监听指定端口. 2.启

Exchange2016多租户方式单SSL证书登录(4)外部客户端登录

内部客户端登录正常后,我们来模拟公网环境的客户端使用outlook和owa的方式进行多租户的登录,模拟环境之前,再回顾下实验环境拓扑图 图中,右边环境内部的DMZ和AD环境已经配置完成,接下来主要配置外部的公网环境,路由器由一台2003的服务器做远程路由访问,添加一台2003的服务器做公网DNS解析,一台测试的公网客户端 2003路由服务器添加两块网卡,INT网卡属于内部网络,IP地址10.0.0.1,OUT网卡属于外部网络,IP地址192.168.0.1 配置远程并启用路由和远程访问 配置完成

用户登录流程详解 +volley(StringRequest)

在实习期间由于要求使用volley,所以第一次开始接触volley,从一开始的迷茫陌生,到疯狂的查找各种资料,通过在项目中用到的实际问题,我想做一些总结,所以写了这篇文章.下面我将介绍我理解的用户登录的一套详细流程,涉及到volley请求以及json数据的解析. 登录流程的总结:首先通过EditText获取到用户名和密码,然后再执行登录请求 LoginToServer()里面发送用户名和密码,服务器返回给我json数据(如果用到Oauth 认证这里返回的json数据就应该是Token的一套东西,

【原创】我所理解的自动更新-客户端更新流程

创建更新线程,跟ui主线程通过message进行交互.1,去http://version.mygame.com/check.php? channelid=%d&appver=%d&resver=%d获取客户端最新版本信息.用curl获取,代码如下,至于curl的具体参数,man或者搜索引擎会告诉你答案 1 static size_t funcGetHttpText(void *ptr, size_t size, size_t nmemb, void *userdata) { 2 size_

客户端登录提示找不到表0

问题描述:服务端搭建完成后,通过IE访问一切正常,但是客户端登录时提示:服务器无法处理请求.--无法找到表0.图例: 分析原因:可能是没有连接到服务器,服务器IIS配置文件不正确,ORCL 11G 的用户名密码区分大小写.解决方法步骤:1.       重新配置服务端IIS路径下WebSiteOrcle\Web配置文件里的配置,注意用户名密码区分大小写. 2.       重启IIS 原文地址:http://bbs.delit.cn/thread-734-1-1.html 转载请注明出处: 撰写

本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口

QQ登录将用户信息存储在cookie中,命名为__qc__k ,请不要占用 __qc__k : 1) :: 在页面顶部引入JS SDK库: 将"js?"后面的appid参数(示例代码中的:100229030)替换成您自己的appid: 示例代码:<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-app

iOS客户端开发流程

客户端项目流程: 1)产品经理做需求调研,确定产品需求,编写需求文档 2)产品人员完成产品原型 3)产品经理召开会议(产品.UI.UE.开发.服务器) 4) 设计人员根据原型设计出一系列UI界面.用户交互体验制定 5) 服务器与客户端成员一起制定接口文档 6)项目经理制定项目开发进度,分配任务,估算开发周期 7) 移动客户端开发人员根据UI界面和需求文档开始编写代码,开发模块上的功能 8) 开发者提交测试 9) 测试部分完毕,提交产品经理,验收产品 10) 提交appstore上线 开发流程: