Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Unbinding sockets in threads.. (http://www.velocityreviews.com/forums/t333861-unbinding-sockets-in-threads.html)

Richard Spooner 08-03-2004 07:47 AM

Unbinding sockets in threads..
 
Chaps,

I've written a piece of python code below that when called with a line such
as x = getdata(9999), listens on that port for data I'm sending it and puts
the data in a list. If I delete x using del x and then try and assign a new
value to port 9999 (e.g z=getdata(9999) ) then it reports that the socket it
already bound, and I can't find any way of unbinding the port.

If I try it not in a thread the del function works fine (i.e. creating and
binding a socket s and then deleting it) Can anyone suggest some
modifications I can do to make this work??

Thanks in advance

Dave

import threading
import socket
import struct
import sys
import time





class getdata(threading.Thread):
def __init__(self, port):
threading.Thread.__init__(self)
self.x = ['ZERO SPACE']
self.s = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
try:
self.s.bind(( '', port))

except socket.error, msg:
print "Could not bind to socket"
time.sleep(3)
self.s.close()
sys.exit(1)
self.carryon = 'true'
self.start()






def run(self):
while self.carryon == 'true':
self.data, self.addr = self.s.recvfrom( 1024 )
self.channel, self.value = struct.unpack( 'IBxxx' , self.data )
try:
self.x[int(self.channel)] = self.value
except IndexError:
while len(self.x)-1 < int(self.channel):
if len(self.x) == int(self.channel):
self.x.append(self.value)
else:
self.x.append('NA')
except:
print "Dictionary creation error"
time.sleep(3)
self.s.close()
sys.exit

print self.x
return




All times are GMT. The time now is 04:14 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.