- 论坛徽章:
- 0
|
多谢提醒,改为多线程后可以循环了,可是又碰到问题了,加上sleep后就不行,不知道为什么
def onstart(self,event):
self.start.Enable(False)
self.stop.Enable(True)
self.list.DeleteAllItems()
self.iplist = []
f = open(IPLIST,'r')
for x in f:
self.iplist.append(x)
f.close
while True:
self.onloop()
time.sleep(5)
def onloop(self):
threads=[]
loops=range(len(self.iplist))
for i in loops:
t = threading.Thread(target=self.sockets,args=(self.iplist[i].split()[0],self.iplist[i].split()[1],data))
threads.append(t)
for i in loops:
threads[i].start()
def sockets(self,host,notes,data):
addr = (host, port)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.settimeout(0.5)
try:
tcpCliSock.connect(addr)
except:
tcpCliSock.close()
lock.acquire()
self.oninsert(host,notes,'连接服务器超时')
lock.release()
tcpCliSock.send('%s\n' % data)
return_data = tcpCliSock.recv(BUFSIZ)
if (return_data != 'ok'):
tcpCliSock.close()
lock.acquire()
self.oninsert(host,notes,return_data)
lock.release()
else:
tcpCliSock.close()
def oninsert(self,host,notes,data):
self.list.DeleteItem(self.list.FindItem(-1, host))
self.list.InsertStringItem(0,'')
self.list.SetStringItem(0, 0, host)
self.list.SetStringItem(0, 1, unicode(notes,'gbk'))
self.list.SetStringItem(0, 2, '%s' % strftime("%Y-%m-%d %H:%M:%S"))
self.list.SetStringItem(0, 3, data)
|
|
|