On 10/14/2010 12:49 PM, Evert Rol wrote:
  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
But what if I want it to serve one client, go to another and then go back. How 
does that work?

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to