I'm hoping this is something simple, and someone can point me in the right direction here. I have a class based on SocketServer (ThreadingTCPServer), and I've used makefile on the socket so I use the "for in " routine. My client sends it a small amount of data. However, both programs appear to hang once the data has been sent, obviously something to do with flushing.

I'd appreciate any pointers.

Regards

J

Server Class:

class _DBSocketHandler( SocketServer.BaseRequestHandler ):
xmlStart = re.compile( "XML-START" )
xmlEnd = re.compile( "XML-END" )
def handle( self ):
print "Accepted Connection From", self.client_address
socketIn = self.request.makefile( 'r' )
socketOut = self.request.makefile( 'wb' )
remoteDoc = None
for dataIn in socketIn:
if self.xmlEnd.match( dataIn ):
remoteDoc.close()
break
if self.xmlStart.match( dataIn ):
print "Receiving XML"
remoteDoc = StringIO()
continue
if remoteDoc is not None:
remoteDoc.write( dataIn )
socketOut.write( "Got Yer XML File, Thanks" )


Client Code:

   def connect( self ):
       self.socketCon.connect( ( self.dbServer, self.dbPort ) )
       testFile = StringIO.StringIO( testXML )
       self.socketCon.send( "XML-START" )
       for xmlSQL in testFile:
           self.socketCon.send( xmlSQL )
       testFile.close()
       self.socketCon.send( "XML-END" )
       self.socketCon.send( "" )
       time.sleep(10)
       while True:
           dataRec = self.socketCon.recv( 8192 )
           if not dataRec: break
       self.socketCon.close()
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to