BaseHTTPRequestHandler: how to read/write until diconnected

M

Maksim Kasimov

Hi,

I'm trying to write an server-application, using BaseHTTPServer/BaseHTTPRequestHandler.

When application is running, some client-application can post data to the server, and BaseHTTPRequestHandler reads all headers and posted raw data from "rfile", sends back response, than client/server session, than session closed - that works just fine.

how to check whether some data posted again by the client in the session, and send response again in one session (and do such iterations util client stops to post data) ?




something like this:

class ServerChannel( BaseHTTPServer.BaseHTTPRequestHandler ):

def do_POST(self):

while needReadMessage:
...
msg_count += 1
log.info( "message number %d arrived" % msg_count )
raw_post_data = self.rfile.read( contentLength )
...
self.wfile.write( respContent )


many thanks for help.
 
N

notanotheridiot

Maksim said:
I'm trying to write an server-application, using BaseHTTPServer/BaseHTTPRequestHandler.

When application is running, some client-application can post data to the server, and BaseHTTPRequestHandler reads all headers and posted raw data from "rfile", sends back response, than client/server session, than session closed - that works just fine.

how to check whether some data posted again by the client in the session, and send response again in one session (and do such iterations util client stops to post data) ?

BaseHTTPServer is precisely that, a HTTP server. what you are
describing is not (I'm pretty sure) not HTTP.
HTTP/1.1 can do something similar and is supported by BaseHTTPServer:
with HTTP/1.1 the stream is not closed between requests. This relies on
a Content-Length field being present in all communications from the
server to the client. To enable HTTP/1.1 you have to set the
protocol_version attribute of your BaseHTTPRequestHandler derived class
to "HTTP/1.1" .

A little while back I wrote a small guide to HTTP in the context of
BaseHTTPServer: http://crunchy.python-hosting.com/wiki/HttpServer

If (as I think) you want to send multiple, inter-dependent messages
each way under the aegis of one HTTP request, you should probably look
at sublassing TCPServer (you can, and probably should, still use
mimetools.Message to parse headers though).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top