网络程序设计-简版

网络程序设计实验-简版

  • 互相通信

  • UI界面

    不多说了 上代码

    from tkinter import *
    import time
    import socket
    import threading
    
    def send_msg():
    	dest_ip = L1.get()
    	dest_port =int(L2.get())
    	send_data = L5.get()
    	Server.sendto(send_data.encode("gbk"), (dest_ip, dest_port))  
    	t.insert(END,time.strftime("%H:%M:%S", time.localtime())+'\n\n'+'KyPianistC'+' : '+send_data+'\n\n')
    	#L2.delete(0,END)
    def run():
    	try:
    		while True:
    			recv_data = Server.recvfrom(1024)  
    			data = recv_data[0].decode("gbk")
    			t.insert(END,time.strftime("%H:%M:%S", time.localtime())+'\n\n'+L1.get()+':'+L2.get()+' '+data+'\n\n')
    	except:
    		t.insert(END,time.strftime("%H:%M:%S", time.localtime())+' '+'信息接收失败'+'\n\n')
    b = threading.Thread(target=run)
    def kk():
    	try:
    		t.insert(END,'Listening On '+L3.get()+':'+L4.get()+'\n\n')
    		t.insert(END,time.strftime("%H:%M:%S", time.localtime())+' '+'准备就绪'+'\n\n')		
    		b.start()
    	except:
    		t.insert(END,time.strftime("%H:%M:%S", time.localtime())+' '+'线程启动失败'+'\n\n')
    
    
    top = Tk()
    top.geometry('450x500')
    top.title('TK Server')
    t = Text(top)
    t.pack()
    Z1 = Label(top,text="目标ip地址端口")
    Z1.place(x=250,y=350)
    L1_text = StringVar()
    L1 = Entry(top,textvariable=L1_text)
    L1_text.set("127.0.0.1")
    L1.place(x=250,y=370)
    L2_text = StringVar()
    L2 = Entry(top,textvariable=L2_text)
    L2_text.set(1289)
    L2.place(x=250,y=400)
    Z2 = Label(top,text="本机ip地址端口")
    Z2.place(x=40,y=350)
    L3_text = StringVar()
    L3 = Entry(top,textvariable=L3_text)
    L3_text.set("127.0.0.1")
    L3.place(x=40,y=370)
    L4_text = StringVar()
    L4 = Entry(top,textvariable=L4_text)
    L4_text.set(1288)
    L4.place(x=40,y=400)
    L5 = Entry(top)
    L5.place(x=40,y=440)
    Server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    ip = L3.get()
    port = int(L4.get())
    Server.bind((ip,port))
    Button1 = Button(top,text='发送',command=send_msg)
    Button1.place(x=350,y=450)
    But = Button(top,text='接受信息',command=kk)
    But.place(x=280,y=450)
    top.mainloop()
    
  • 两个程序的代码是一样的 (端口不一样)

  • 点击 “接受信息”按钮,才可以接收到信息

  • 运行截图

网络程序设计-简版

  • 可能遇到的问题

    • 出现错误 OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。这是因为:虽然python的运行窗口关闭了 但是python程序并没有关闭。可以修改源程序的端口,或者是打开windows任务管理器,关闭名为"python"的程序

网络程序设计-简版

上一篇:常用排序算法总结和对比


下一篇:(十五)常用排序算法总结和对比