学习简单的python----最简单的python +3(写入XML,使用UDP发送)

来源:互联网 发布:校园网络诈骗是什么 编辑:程序博客网 时间:2024/05/23 20:50
#!/usr/bin/pythonfrom Tkinter import *import socketimport sysclass PPCU(object):def __init__(self):self.top=Tk()self.top.title('vKsir01.01')self.nameVar=StringVar()self.nameVar.set('Name')self.departVar=StringVar()#departVar is a Variable stringself.departVar.set('Department')#It's default value is 'Department'frame=Frame(self.top)nameLabel=Label(frame,text="Name:",underline=0)self.nameEntry=Entry(frame,textvariable=self.nameVar)self.nameEntry.focus_set()departLabel=Label(frame,text='Depart:',underline=0)departEntry=Entry(frame,textvariable=self.departVar)nameLabel.grid(row=0,column=0,sticky=W,pady=3,padx=3)self.nameEntry.grid(row=0,column=1,sticky=EW,pady=3,padx=3)departLabel.grid(row=0,column=2,sticky=EW,pady=3,padx=3)departEntry.grid(row=0,column=3,columnspan=2,sticky=EW,pady=3,padx=3)#work PlanworkLabel=Label(frame,text='WorkPlan')workEntry=Entry(frame)workLabel.grid(row=1,column=0,sticky=W,pady=1,padx=3)workEntry.grid(row=2,column=0,rowspan=2,columnspan=5,sticky=EW,pady=1,padx=4)#WorkSpaceamWorkLabel=Label(frame,text='TASK a.m')amWorkEntry=Entry(frame)amWorkLabel.grid(row=4,column=0,sticky=W,pady=1,padx=3)amWorkEntry.grid(row=5,column=0,rowspan=2,columnspan=5,sticky=N+E+S+W,pady=1,padx=3)#Button of OKokButton=Button(frame,text="OK",command=self.ok)okButton.grid(row=7,column=3,sticky=EW,pady=3,padx=3)cancelButton=Button(frame,text="Cancel",command=self.close)cancelButton.grid(row=7,column=4,sticky=EW,pady=3,padx=3)cancelButton.bind("<Return>",self.close)frame.pack()#click ok_buttondef ok(self,event = None):self.sendSrvSock()#click close_buttondef close(self,event=None):quit()def createXml(self):from xml.dom.minidom import Document  # Create the minidom document workmsg = Document()  # Create the <wml> base element wml = workmsg.createElement("wml") workmsg.appendChild(wml)  # Give the <wml> elemenet some textgetext=''getext=self.nameEntry.get()ptext = workmsg.createTextNode(getext) wml.appendChild(ptext)return workmsg#function of sending message to serverdef sendSrvSock(self):sendmsg=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)send_data=''#declace a stringsend_data = self.createXml()sendmsg.sendto(bytes(send_data),('10.11.1.88',6601))def main():PPCU()mainloop()if __name__=='__main__':main()


客户端程序运行示例,如上。

主要实现了客户端简单的界面,输入的Name写入XML,然后使用XML作为消息发送程序,向服务端发送使用UDP发送消息。

注:遇到问题--sendto的时候,出现 sendto() takes exactly 3 arguments (2 given)

解决:>>> data = 'UDP Test Data'

>>> udp.sendto(data, (hostname, port))Traceback (most recent call last):

 File "", line 1, in TypeError: sendto() takes exactly 3 arguments (2 given)

Is : self.socket.sendto(msg, self.address)

Should look like : self.socket.sendto(bytes(msg), self.address)

原创粉丝点击