Hi Chris, Bit hard to comment on the actual code, as it was in attachments, but the important bit is here:
class Handler(SocketServer.BaseRequestHandler): #the handler '''A handler which calls %s in the handle method.'''%handle_func def handle(self): #the handle method self.data = self.request.recv(1024) #the data self.client = self.request #the client handle_func(self) #call the handle method giving self (I did a bit of reformatting, since I had to try the code myself, because I didn't spot the error immediately.) In essence, your server accepts the client connection, then proceeds to the handle function, where it performs the necessary actions. It will *not* call the handle function for each set of data it receives, it just stays there. So you'll need a while loop in your handle function that keeps on processing the client data, until there is not client data anymore (EOF or similar), then return. Evert >>>> Dear Tutors, >>>> I have attached my 2 programs for networking. It uses socket and >>>> SocketServer, but it just simplifies it even more. The problem is it won't >>>> work. The Client raises the error, (with trace back) >>>> Traceback (most recent call last): >>>> File "G:\My Dropbox\My Dropbox\Chris\Not done\client.py", line 34, >>>> in<module> >>>> print client.recv() >>>> File "G:\My Dropbox\My Dropbox\Chris\Not done\client.py", line 16, in >>>> recv >>>> return self.__sock.recv(1024) >>>> error: [Errno 10053] An established connection was aborted by the software >>>> in your host machine >>>> The server seems to get an error of some sort, but also seems to catch and >>>> print it. It prints >>>> ---------------------------------------- >>>> Exception happened during processing of request from ('127.0.0.1', 1424) >>>> Traceback (most recent call last): >>>> File "C:\Python26\lib\SocketServer.py", line 281, in >>>> _handle_request_noblock >>>> self.process_request(request, client_address) >>>> File "C:\Python26\lib\SocketServer.py", line 307, in process_request >>>> self.finish_request(request, client_address) >>>> File "C:\Python26\lib\SocketServer.py", line 320, in finish_request >>>> self.RequestHandlerClass(request, client_address, self) >>>> TypeError: 'NoneType' object is not callable >>>> ---------------------------------------- >>>> I look at both of the documentations of socket and SocketServer, but I >>>> couldn't firgue it out. I don't know much about networking. Please Help >>> I don't know much about networking, less so about it on Windows; also, I've >>> only scanned quickly through the server script, but I notice your >>> create_handler() function doesn't return anything. I guess it needs to >>> return the Handler class. >>> The example in the Python docs doesn't use a factory function, but instead >>> directly puts the class as the second argument to TCPServer. >>> So the second argument needs to be a class, but since your create_handler() >>> function returns nothing, you presumably get this NoneType exception. >>> >>> Evert >>> >> Yeah, that could be a problem. It should return the class. > Now it won't send more than once. The Error the clients raises is: > Traceback (most recent call last): > File "G:\My Dropbox\My Dropbox\Chris\Not done\client.py", line 34, in > <module> > print client.recv() > File "G:\My Dropbox\My Dropbox\Chris\Not done\client.py", line 16, in recv > return self.__sock.recv(1024) > error: [Errno 10053] An established connection was aborted by the software in > your host machine > The server is blissfully unaware of its crashing clients, and keeps on going > to help more clients to there dooms. The client can receive data multiple > times, but just can send twice. Please help. > <server.py><client.py>_______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor