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

Reply via email to