I'm writing an application that requires a specialized HTTP server.
This server needs to listen on a range of ports, for example, ports
10000 through 10100. Whenever someone makes an HTTP connection to the
host on any of these ports, a WEBrick servlet will respond. The same
servlet should respond to each connection.
I know that I can do this using the "hammer and tongs" method of
starting up a large number of identical WEBrick applications, each
configured to listen on a different port. But I'd like to do this
within a single program instance, if at all possible.
It's trivial to do this with a single port, but is there a way to use
WEBrick to listen on a range of ports in this manner? If so, could
someone point me to an example or some docs?
Although I prefer WEBrick, if there's an easy way to do manage a range
of HTTP connections like this using some other ruby utility, I'll settle
for that.
Thanks in advance.
--
Lloyd Zusman
ljz@asfast.com
God bless you.
|
|
0
|
|
|
|
Reply
|
ljz (199)
|
11/7/2004 12:26:48 AM |
|
On Sun, Nov 07, 2004 at 09:26:48AM +0900, Lloyd Zusman scribed:
> It's trivial to do this with a single port, but is there a way to use
> WEBrick to listen on a range of ports in this manner? If so, could
> someone point me to an example or some docs?
brick = HTTPServer.new(...)
myports.each { |p| brick.listen(address, p) }
Works like a charm.
-Dave
--
work: dga@lcs.mit.edu me: dga@pobox.com
MIT Laboratory for Computer Science http://www.angio.net/
|
|
0
|
|
|
|
Reply
|
dga (46)
|
11/7/2004 12:36:31 AM
|
|
P.S. -- In my request below, I'm hoping to be able to do this without
forking off a bunch of threads, one for each HTTPServer instance
associated with a different port. I thought that I might be
able to have a single HTTPServer instance and use the #listen
method inherited from GenericServer, but I can't seem to get
that to work. Thanks again in advance.
Lloyd Zusman <ljz@asfast.com> writes:
> I'm writing an application that requires a specialized HTTP server.
> This server needs to listen on a range of ports, for example, ports
> 10000 through 10100. Whenever someone makes an HTTP connection to the
> host on any of these ports, a WEBrick servlet will respond. The same
> servlet should respond to each connection.
>
> I know that I can do this using the "hammer and tongs" method of
> starting up a large number of identical WEBrick applications, each
> configured to listen on a different port. But I'd like to do this
> within a single program instance, if at all possible.
>
> It's trivial to do this with a single port, but is there a way to use
> WEBrick to listen on a range of ports in this manner? If so, could
> someone point me to an example or some docs?
>
> Although I prefer WEBrick, if there's an easy way to do manage a range
> of HTTP connections like this using some other ruby utility, I'll settle
> for that.
>
> Thanks in advance.
>
> --
> Lloyd Zusman
> ljz@asfast.com
> God bless you.
>
>
>
--
Lloyd Zusman
ljz@asfast.com
God bless you.
|
|
0
|
|
|
|
Reply
|
ljz (199)
|
11/7/2004 12:41:47 AM
|
|
"David G. Andersen" <dga@lcs.mit.edu> writes:
> On Sun, Nov 07, 2004 at 09:26:48AM +0900, Lloyd Zusman scribed:
>> It's trivial to do this with a single port, but is there a way to use
>> WEBrick to listen on a range of ports in this manner? If so, could
>> someone point me to an example or some docs?
>
> brick = HTTPServer.new(...)
>
> myports.each { |p| brick.listen(address, p) }
>
> Works like a charm.
I had tried that, but I must have used an invalid 'address' or something
... 'cause now it works.
Thanks!
--
Lloyd Zusman
ljz@asfast.com
God bless you.
|
|
0
|
|
|
|
Reply
|
ljz (199)
|
11/7/2004 12:51:47 AM
|
|
Lloyd Zusman <ljz@asfast.com> writes:
> P.S. -- In my request below, I'm hoping to be able to do this without
> forking off a bunch of threads, one for each HTTPServer instance
> associated with a different port. I thought that I might be
> able to have a single HTTPServer instance and use the #listen
> method inherited from GenericServer, but I can't seem to get
> that to work. Thanks again in advance.
Depending on the operating system that you deploy on, you can also do this
with simple port mapping in the firewall. On linux I use this to map port
localhost:8080 to external-address:80.
S.
|
|
0
|
|
|
|
Reply
|
stefan.arentz (138)
|
11/7/2004 8:35:14 AM
|
|
|
4 Replies
24 Views
(page loaded in 0.123 seconds)
|