发生错误accept_incomming_connection未定义

时间:2019-07-13 04:29:35

标签: server connection client python-3.7

accept_incoming连接未定义错误来了,我不知道为什么? 所以我粘贴了完整的程序,以便于任何人轻松理解geeting解决方案。

from tkinter import*
import tkinter.messagebox
from  tkinter import ttk
import random
import time
import datetime
from socket import AF_INET, socket, SOCK_STREAM
from threading import Thread



def main():
    root=Tk()
    app=Window1(root)


class Window1:
    def __init__(self,master):
        self.master=master
        self.master.title("Admin Login System")
    self.master.geometry('1000x400+120+120')
    self.master.config(bg='wheat1')
    self.frame=Frame(self.master,bg='wheat1')
    self.frame.pack()

    self.Username=StringVar()
    self.Password=StringVar()

    self.lblTitle=Label(self.frame,text="Admin Login",font=('arial',40,'bold'),fg='black',bg='wheat1')
    self.lblTitle.grid(row=0,column=0,columnspan=2,pady=40)
    ############################################################################################################
    self.loginFrame=Label(self.frame,width=1100,height=500,font=('arial',15,'bold'),relief='ridge',bg='wheat1',bd=10)
    self.loginFrame.grid(row=1,column=0)

    self.loginFrame1=Label(self.frame,width=1100,height=500,font=('arial',15,'bold'),relief='ridge',bg='wheat1',bd=10)
    self.loginFrame1.grid(row=2,column=0)
    ####################################################  label ###########################################################
    self.lblUsername=Label(self.loginFrame,text='Username',font=('arial',15,'bold'),bd=7)
    self.lblUsername.grid(row=0,column=0)
    self.txtUsername=Entry(self.loginFrame,font=('arial',15,'bold'),textvariable=self.Username)
    self.txtUsername.grid(row=0,column=1)

    self.lblPassword=Label(self.loginFrame,text='Password',font=('arial',15,'bold'),bd=7)
    self.lblPassword.grid(row=1,column=0)
    self.txtPassword=Entry(self.loginFrame,font=('arial',15,'bold'),show='*',textvariable=self.Password)
    self.txtPassword.grid(row=1,column=1)




    ##################################################   buttons  ##########################################################
    self.btnlogin=Button(self.loginFrame1,text='login',width=10,font=('arial',15,'bold'),command=self.Login_System)
    self.btnlogin.grid(row=3,column=0,pady=10,padx=5)

    self.btnReset=Button(self.loginFrame1,text='Reset',width=10,font=('arial',15,'bold'),command=self.Reset)
    self.btnReset.grid(row=3,column=1,pady=10,padx=5)

    self.btnExit=Button(self.loginFrame1,text='Exit',width=10,font=('arial',15,'bold'),command=self.Exit)
    self.btnExit.grid(row=3,column=2,pady=10,padx=5)
    #*************************************************************************************************************************
def Login_System(self):
    u=(self.Username.get())
    p=(self.Password.get())
    if (u=='akash' and p=='giri'):
        self.newWindow=Toplevel(self.master)
        self.app=Window2(self.newWindow)
    else:
        tkinter.messagebox.askyesno("Login Systems","Too Bad,invalid login details")
        self.Username.set("")
        self.Password.set("")
        self.txtUsername.focus()

def Reset(self):
        self.Username.set("")
        self.Password.set("")
        self.txtUsername.focus()
def Exit(self):
        self.Exit=tkinter.messagebox.askyesno("Login Systems","confirm if u want to exit")
        if self.Exit>0:
            self.master.destroy()
        else:
            command=self.new_window
            return


def new_window(self):
        self.newwindow=Toplevel(self.master)
        self.app=Window2(self.newwindow)

class Window2:
    def __init__(self,master):
        self.master=master
        self.master.title("Server")
        self.master.geometry('800x500+120+120')
        self.master.config(bg='CadetBlue')
        self.frame=Frame(self.master,bg='CadetBlue')
        self.frame.pack()
        self.text=Text(master,width=60,height=30,bd=10,bg='white')
        self.text.pack(side=LEFT)
        self.button=Button(master,text='Dasboard',width=20,height=2,bg='misty rose',command=self.show)
        self.button.pack(side=TOP,pady=30)

        self.button1=Button(master,text='Users',width=20,height=2,bg='misty rose')
        self.button1.pack(pady=30)

        self.button2=Button(master,text='Chat',width=20,height=2,bg='misty rose')
        self.button2.pack(pady=30)

        self.button3=Button(master,text='Setting',width=20,height=2,bg='misty rose')
        self.button3.pack(pady=30)

    def accept_incoming_connections(self):
        """Sets up handling for incoming clients."""
        while True:
            client, client_address = SERVER.accept()
            print("%s:%s has connected." % client_address)
            client.send(bytes("Greetings from the cave! Now type your name and press enter!", "utf8"))
            addresses[client] = client_address
            Thread(target=handle_client, args=(client,)).start()
    def handle_client(client):     # Takes client socket as argument.
        """Handles a single client connection."""
        name = client.recv(BUFSIZ).decode("utf8")
        welcome = 'Welcome %s! If you ever want to quit, type {quit} to exit.' % name
        client.send(bytes(welcome, "utf8"))
        msg = "%s has joined the chat!" % name
        broadcast(bytes(msg, "utf8"))
        clients[client] = name
        while True:
            msg = client.recv(BUFSIZ)
            if msg != bytes("{quit}", "utf8"):
                broadcast(msg, name+": ")
            else:
                client.send(bytes("{quit}", "utf8"))
                client.close()
                del clients[client]
                broadcast(bytes("%s has left the chat." % name, "utf8"))
                break
    def broadcast(msg, prefix=""):  # prefix is for name identification.
        """Broadcasts a message to all the clients."""
        for sock in clients:
            sock.send(bytes(prefix, "utf8")+msg)

    clients = {}
    addresses = {}

    HOST = ''
    PORT = 33000
    BUFSIZ = 1024
    ADDR = (HOST, PORT)

    SERVER = socket(AF_INET, SOCK_STREAM)
    SERVER.bind(ADDR)
    def show(self):    
        self.SERVER.listen(5)
        a="Waiting for connection..."
        self.text.insert(INSERT,a+'\n')
        self.ACCEPT_THREAD = Thread(target=self.accept_incoming_connections,args(self))
        self.ACCEPT_THREAD.start()
        self.ACCEPT_THREAD.join()
        self.SERVER.close()

if __name__=='__main__':
    main()

0 个答案:

没有答案