Re: HTTPhandlers

From: Richard Blewett [DevelopMentor] (richardb_at_develop.com)
Date: 09/15/04


To: microsoft.public.dotnet.framework
Date: Wed, 15 Sep 2004 01:08:06 -0700

Not being able to listen on a port that another process is listening on is just the way it works - the only way they have managed to get more then one process on port 80 in XP SP2 and Win2003 is to have a kernel mode driver (http.sys) listen on port 80 and dispatch HTTP traffic to the various user mode processes.

 Think of it this way: the port is like a door into a house. You are trying to build another house where one already exists. The http.sys solution is like having the main doorway into a block of flats which is fine as long as you obey the rules of the block's landlord (i.e. you only use HTTP).

 So my understanding of what you are tryinng to achieve in terms of the actual application (as opposed to any particular implementation) is to have a web based chat program that is accessible from a browser. You connect to the "server" and I assume you log on in some way so you can be identified in the conversation. The server then "delivers" the messages in the conversation to each of the clients.

 ls this the application you are building (or some variant of it)?

 Regards

 RIchard Blewett - DevelopMentor

 http://staff.develop.com/richardb/weblog

   nntp://news.microsoft.com/microsoft.public.dotnet.framework/<35538620-7FC3-46B4-9008-4002B385F20F@microsoft.com>

 Richard,
 
 Excactly how I keep the connection alive for indefenet is not important for
 my problem. If you are interested to learn how I do it we can engage in a
 seperate discusion about this after I solved my problem.
 
 My problem is that I use a TcpListener on what ever port is not in use. But
 some users can't use many ports other then 80. When I try to have the
 TcpListener listen on port 80 I get this error stating that port is already
 in use or something.
 This is totally bogus and thus I thought of using HTTPhandlers to redirect
 incomming requests and store them.
 Some request get redirected and others are left to any other process that
 wants them like IIS or some other web server.
 
 I really dont feel like lower level c++ winsock programming and want a clean
 way of doing this.
 
 Regards,
 
 DaFou
 "Richard Blewett [DevelopMentor]" wrote:
 
> The link you provided does not explain how to hold a connection open over HTTP - unless the answers to the query do, but this requires a subscription which I'm not prepared to pay. Is there any other way for me to be able to see the technique that keeps an HTTP based connection active over a long period? As far as I know, any HTTP server is going to nuke the connection from the server side after about 30 seconds of inactivity.
>
> Regards
>
> Richard Blewett - DevelopMentor
>
> http://staff.develop.com/richardb/weblog
>
> nntp://news.microsoft.com/microsoft.public.dotnet.framework/<90FD5583-89F9-4847-893B-ABE87226BFB7@microsoft.com>
>
> As I explan in the link I provided I CAN keep the connection open using the
> HTTP protcol. HTTP is nothing more then a pre defined set of commands so HTTP
> in itself is not stateless. I am not looking to debate wether my ChatServer
> works or not because it does work.
> The only problem I have is I use a TcpListener and I cannot use that on port
> 80 becuase IIS is already listening on that port and I need my program to
> work on port 80.
>
>
> "Girish Bharadwaj" wrote:
>
> > One thing you can probably do is to have a different port based server to
> > which you make the request to do the connection with the user and maintain
> > that connection. But, as Richard says, you cannot get there from here.
> >
> >
> > --
> > Girish Bharadwaj
> > http://msmvps.com/gbvb
> > "Richard Blewett [DevelopMentor]" <richardb@develop.com> wrote in message
> > news:ejE9wNlmEHA.1136@TK2MSFTNGP10.phx.gbl...
> > > What you NEED and whether the communications protocol you have selected
> > can support it are two different issues.
> > >
> > > HTTP is a stateless protocol. You cannot keep connections open over long
> > periods (keep-alives are not desined for this).
> > >
> > > So sorry, you cannot toake the approach you want with HTTP
> > >
> > > Regards
> > >
> > > Richard Blewett - DevelopMentor
> > >
> > > http://staff.develop.com/richardb/weblog
> > >
> > >
> > >
> > >
> > nntp://news.microsoft.com/microsoft.public.dotnet.framework/<4728F0E6-586C-4E87-A5E1-D530EE13C864@microsoft.com>
> > >
> > > I NEED to maintain an active connection to be able to create an efficient
> > > chat application on port 80 without the use of flash or java or active x.
> > > Please read this link:
> > http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/Q_21129241.html
> > > It explains what I want to do.
> > >
> > > It comes down to that I have written this very efficient DHTML chat
> > server
> > > that maintains an active connection with the browser. But I use a
> > TcpListener
> > > to make it work and this means I cannot have the DHTML server work on
> > port 80.
> > > So I figured to use HTTPhandler to intercept certain requests on port 80
> > and
> > > pass them to the DHTMLchatServer.
> > >
> > > Any advice would be welcome
> > >
> > >
> > > "Girish bharadwaj" wrote:
> > >
> > > > If you look at the help for HttpContext: " Encapsulates all
> > HTTP-specific
> > > > information about an individual HTTP request. ". By definition, Context
> > is
> > > > only per request. If you want more that information or want to do
> > something
> > > > across invocations, you might have to consider some of the state
> > management
> > > > schemes presented by ASP.NET such as Cookies, ViewState, Session
> > > > ,Application or Cache.
> > > >
> > > > --
> > > > Girish Bharadwaj
> > > > http://msmvps.com/gbvb
> > > > "John Saunders" <johnwsaundersiii@notcoldmail.com> wrote in message
> > > > news:%238$f0zemEHA.2788@TK2MSFTNGP10.phx.gbl...
> > > > > "daFou" <daFou@discussions.microsoft.com> wrote in message
> > > > > news:1F690C94-2FB5-43F8-B295-EC981805906E@microsoft.com...
> > > > > > Hi ALl,
> > > > > >
> > > > > > How do I prevent the ProcessRequest method from the IHttpHandler
> > Class
> > > > > from
> > > > > > closing the http connection and killing the context after the
> > > > > ProcessRequest
> > > > > > method has ended.
> > > > > >
> > > > > > TO further explain what I want please read this link:
> > > > > >
> > > > >
> > > >
> > http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/Q_21129241.html
> > > > >
> > > > > Q: How do I prevent ProcessRequest from closing the connection when
> > it's
> > > > > done?
> > > > > A: You don't
> > > > >
> > > > > ASP.NET doesn't work that way. It's all about request/response. Once
> > the
> > > > > response has been sent, the request is over and gone, as though it
> > had
> > > > never
> > > > > existed (except for anything persistent which the request may have
> > done).
> > > > >
> > > > > If you need to keep connections open for an indefinite period of
> > time,
> > > > then
> > > > > you need to stop using ASP.NET.
> > > > > --
> > > > > John Saunders
> > > > > johnwsaundersiii at hotmail
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > >
> > > ---
> > > Incoming mail is certified Virus Free.
> > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > Version: 6.0.760 / Virus Database: 509 - Release Date: 10/09/2004
> > >
> > >
> > >
> > > [microsoft.public.dotnet.framework]
> >
> >
> >
>
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.760 / Virus Database: 509 - Release Date: 10/09/2004
>
>
>
> [microsoft.public.dotnet.framework]
>
 
 ---
 Incoming mail is certified Virus Free.
 Checked by AVG anti-virus system (http://www.grisoft.com).
 Version: 6.0.760 / Virus Database: 509 - Release Date: 10/09/2004

 
 [microsoft.public.dotnet.framework]



Relevant Pages

  • Re: HTTPhandlers
    ... Richard Blewett - DevelopMentor ... As I explan in the link I provided I CAN keep the connection open using the ... HTTP is nothing more then a pre defined set of commands so HTTP ... The only problem I have is I use a TcpListener and I cannot use that on port ...
    (microsoft.public.dotnet.framework)
  • Re: HTTPhandlers
    ... but not on port 80. ... Regards ... > My problem is that I use a TcpListener on what ever port is not in use. ... HTTP is nothing more then a pre defined set of commands so HTTP ...
    (microsoft.public.dotnet.framework)
  • Re: HTTPhandlers
    ... Regards ... Richard Blewett - DevelopMentor ... My chat server does work on any other port that is not already in use. ... I need to know how I can have a TcpListener listen on port 80 eventhough IIS ...
    (microsoft.public.dotnet.framework)
  • Re: Simple FTP Setup - whats not right
    ... It could, FTP uses port 21, HTTP uses port 80. ... resolve to the correct IP address. ... Best regards, ...
    (microsoft.public.windows.server.dns)
  • Re: freebsd-current Digest, Vol 30, Issue 3
    ... >> I commited a fix that would have caused all of the jerky behaviors under ... > The port is broken on all architectures. ... > Rionda aka Matteo Riondato ...
    (freebsd-current)