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
Sincerely,
Me
import SocketServer
def echo(self, data, server, client): #the default handling function
client.send(data) #echo
def create_handler(handle_func=echo): #creates an handler
class Handler(SocketServer.BaseRequestHandler): #the handler
def handle(self): #the handle method
handle_func(self, self.request.recv(1024), self.server, self.request) #call the handle method giving self, the data, the server, and the client
def run(handle_func = echo, host='localhost', port=1024): #init function
SocketServer.TCPServer((host, port), create_handler(handle_func)).serve_forever() #serve forever
if __name__ == '__main__': run() #if run directly, run server
import socket
class Client(object): #client object
def __init__(self, host = 'localhost', port = 1024, timeout = None):
self.host = host #set attributes
self.port = port
self.__sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Make a sock
self.connect(self.host, self.port)
self.timeout = timeout
def send(self, data): #send data
if self.closed: raise NotConnectedError, 'The socket isn\'t connected.' #if closed, raise error
self.__sock.send(data)
def recv(self): #receive data
if self.closed: raise NotConnectedError, 'The socket isn\'t connected.' #if closed, raise error
return self.__sock.recv(1024)
def close(self): #close sock
self.__sock.close()
self.closed = True
def connect(self, host, port): #connect or reconnect
self.__sock.connect((host, port))
self.closed = False #set closed to false
def __get_timeout(self): return self.__sock.gettimeout()
def __set_timeout(self, timeout): self.__sock.settimeout(timeout)
timeout = property(__get_timeout, __set_timeout)
class __NotConnectedError(Exception): pass #A ClosedError
if __name__ == '__main__':
client = Client()
while True:
client.send(raw_input('What do you want to send? '))
print client.recv()
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor