#!/usr/bin/python
from Tkinter import *
import socket
import sys
class 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 string
self.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 Plan
workLabel=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)
#WorkSpace
amWorkLabel=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 OK
okButton=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_button
def ok(self,event = None):
self.sendSrvSock()
#click close_button
def 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 text
getext=''
getext=self.nameEntry.get()
ptext = workmsg.createTextNode(getext)
wml.appendChild(ptext)
return workmsg
#function of sending message to server
def sendSrvSock(self):
sendmsg=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
send_data='' #declace a string
send_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)
这篇博客介绍了Python初学者如何创建简单的客户端程序,程序能将输入的Name保存到XML文件,并利用XML内容通过UDP协议发送到服务器。在实现过程中,作者遇到了sendto函数参数错误的问题,通过修改将字符串转换为bytes类型成功解决了问题。
2191

被折叠的 条评论
为什么被折叠?



