Попробовал перенести консольное приложение в GUI, появилась ошибка:
Exception in thread Thread-1:
Traceback (most recent call last):
File “c:\Python32\lib\threading.py”, line 736, in _bootstrap_inner
self.run()
File “C:\Users\maksimys\Documents\NetBeansProjects\GUI_CLIENT\src\gui_client.py”, line 15, in run
recvData = self._connector.recv (_recvBuffer)
socket.error: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied
Из-за малого опыта программирования python и работы с сокетами не получается определить из-за чего возникает ошибка. Помогите пожалуйста :)
Код:
import datetime
import socket
import threading
from tkinter import *
_recvBuffer = 2000
class MyThread2 (threading.Thread):
def __init__(self, sock):
self._connector = sock
threading.Thread.__init__(self)
def run (self):
while 1:
recvData = self._connector.recv (_recvBuffer)
obj.history.insert(END, " "+ str(hour) + ":" + str(minutes) + ":" + str(sec)+": "+str(recvData,encoding="utf-8")+"\n")
class MyThread1 (threading.Thread):
def run(self):
obj.but_send.bind("<Button-1>", sendMessage)
obj.but_exit.bind("<Button-1>", exit)
obj.but_reg.bind("<Button-1>", reg)
class Main:
def __init__(self):
self.but_reg = Button(root)
self.but_reg["text"] = "Client register!"
self.lab_nic = Label(root, text="NIC-name:", font="Arial 11")
#self.lab_ip = Label(root, text="Client IP-address:", font="Arial 11")
self.lab_ip_srv = Label(root, text="Server IP-address:", font="Arial 11")
self.ent_nic = Entry(root, width = 20, bd = 3)
#self.ent_ip = Entry(root, width = 20, bd = 3)
ip_add = StringVar()
ip_add.set("127.0.0.1")
self.ent_ip_srv = Entry(root, textvariable = ip_add, width = 20, bd = 3)
self.but_send = Button(root)
self.but_send['text'] = "Send Message!"
self.but_send['state'] = 'disabled'
self.history = Text(root,width=30,height=10, font="Verdana 12")
self.message = Entry(root, width = 50, bd = 3)
self.but_exit = Button(root)
self.but_exit['text'] = "Close&Exit"
self.lab_nic.grid(row=0,column=0, padx = 20, sticky = "nw")
self.ent_nic.grid(row=1,column=0, padx = 20, sticky = "nw")
#self.lab_ip.grid(row=2,column=0, padx = 20, sticky = "nw")
#self.ent_ip.grid(row=3,column=0, padx = 20, sticky = "nw")
self.lab_ip_srv.grid(row=0,column=0, padx = 20, sticky = "se")
self.ent_ip_srv.grid(row=1,column=0, padx = 20, sticky = "se")
self.but_reg.grid(row=3,column = 2, pady = 15, padx = 10)
self.history. grid(row = 4, column = 0, padx = 20,columnspan = 2)
self.message.grid(row=5,column =0, padx = 20, pady = 10)
self.but_send.grid(row = 6, column = 0, padx = 20, pady = 10, sticky = "se")
self.but_exit.grid(row = 6, column = 2, padx = 20, pady = 10)
def func(event):
now = datetime.datetime.now()
year, month, day, hour, minutes, sec, wday, yday, isdst = now.timetuple()
obj.history.insert(END, obj.ent_nic.get()+ " "+ str(hour) + ":" + str(minutes) + ":" + str(sec)+": "+obj.message.get()+"\n" )
def exit(event):
root.destroy()
sock.close()
def reg(event):
obj.but_send['state'] = 'active'
HOST = obj.ent_ip_srv.get()
PORT = 12345
sock.connect((HOST, PORT))
def sendMessage(event):
sock.send(bytes(obj.message.get(),"utf-8"))
#result = sock.recv(1024)
#history.insert(result)
root = Tk()
root.title("Client")
obj = Main()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
MyThread2(sock).start()
MyThread1().start()
root.mainloop()