I'm now experimenting with the SocketServer class. Originally I
subclassed the StreamRequestHa ndler to make my own custom handler, but a
result of this seems to be that the client socket closes after it has
been used, instead of staying open.
Just as a test, I decided to use BaseRequestHand ler instead, because I
know its methods aren't implemented. So this is what I have:
-----
import SocketServer
host = ''
port = 51234
address = (host, port)
buffer_size = 1024
class MyRequestHandle r(SocketServer. BaseRequestHand ler):
def handle(self):
print '...connected from:', self.client_add ress
data = self.request.re cv(buffer_size)
self.request.se nd('%s %s' % ('You typed:', data))
socket_server = SocketServer.TC PServer(address , MyRequestHandle r)
print 'waiting for connection...'
socket_server.s erve_forever()
------
------
from socket import *
host = 'localhost'
port = 51234
address = (host, port)
buffer_size = 1024
client_socket = socket(AF_INET, SOCK_STREAM)
client_socket.c onnect(address)
while True:
data = raw_input('')
if not data:
break
client_socket.s end(data)
data = client_socket.r ecv(buffer_size )
print data
client_socket.c lose()
------
But this only seems to work one time, and then subsequent attempts
return nothing, and then the client program seems to crash (or just
close on its own).
What's happening here?
subclassed the StreamRequestHa ndler to make my own custom handler, but a
result of this seems to be that the client socket closes after it has
been used, instead of staying open.
Just as a test, I decided to use BaseRequestHand ler instead, because I
know its methods aren't implemented. So this is what I have:
-----
import SocketServer
host = ''
port = 51234
address = (host, port)
buffer_size = 1024
class MyRequestHandle r(SocketServer. BaseRequestHand ler):
def handle(self):
print '...connected from:', self.client_add ress
data = self.request.re cv(buffer_size)
self.request.se nd('%s %s' % ('You typed:', data))
socket_server = SocketServer.TC PServer(address , MyRequestHandle r)
print 'waiting for connection...'
socket_server.s erve_forever()
------
------
from socket import *
host = 'localhost'
port = 51234
address = (host, port)
buffer_size = 1024
client_socket = socket(AF_INET, SOCK_STREAM)
client_socket.c onnect(address)
while True:
data = raw_input('')
if not data:
break
client_socket.s end(data)
data = client_socket.r ecv(buffer_size )
print data
client_socket.c lose()
------
But this only seems to work one time, and then subsequent attempts
return nothing, and then the client program seems to crash (or just
close on its own).
What's happening here?
Comment