Forum: Ruby basic WEBrick question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Mark V. (Guest)
on 2006-01-20 18:38
(Received via mailing list)
I have the following basic code. When I run this it says "TCPServer
Error: Address already in use - bind(2)". I can hit Ctrl-C to kill it,
change the port to anything and rerun it and I still get that error
message. I must be missing something really basic.

require 'webrick'
include WEBrick

class AddServlet < HTTPServlet::AbstractServlet
  def do_GET(req, res)
    n1 = req.query['n1'].to_i
    n2 = req.query['n2'].to_i

    res['Content-Type'] = 'text/html'
    res.body = "The sum of #{n1} and #{n2} is #{n1 + n2}."
  end
end

server = HTTPServer.new(:Port=>2000)
trap('INT') { server.shutdown }
trap('TERM') { server.shutdown }
server.mount("/add", AddServlet)
server.start
Caleb T. (Guest)
on 2006-01-20 19:50
(Received via mailing list)
On Friday 20 January 2006 10:59, Mark V. wrote:
> I have the following basic code. When I run this it says "TCPServer
> Error: Address already in use - bind(2)". I can hit Ctrl-C to kill it,
> change the port to anything and rerun it and I still get that error
> message. I must be missing something really basic.

It works here on Linux.  What's your platform, and are you sure you
don't have
something else already running on port 2000 ?
Mark V. (Guest)
on 2006-01-20 20:48
(Received via mailing list)
On 1/20/06, Caleb T. <removed_email_address@domain.invalid> wrote:
> On Friday 20 January 2006 10:59, Mark V. wrote:
> > I have the following basic code. When I run this it says "TCPServer
> > Error: Address already in use - bind(2)". I can hit Ctrl-C to kill it,
> > change the port to anything and rerun it and I still get that error
> > message. I must be missing something really basic.
>
> It works here on Linux.

Thanks for checking it!

> What's your platform

I've been able to duplicate this under both Windows XP and Fedora Core 4
Linux.

> and are you sure you don't have
> something else already running on port 2000 ?

I tried again a while ago and it's now working under Windows. Makes me
think that for some reasons when I killed the server it didn't
immediately free up the port. However, under Linux it's still saying
the port is in use.

Is there an easy way I can ask Linux for a list of all the ports in use?
Caleb T. (Guest)
on 2006-01-20 20:57
(Received via mailing list)
> I tried again a while ago and it's now working under Windows. Makes me
> think that for some reasons when I killed the server it didn't
> immediately free up the port. However, under Linux it's still saying
> the port is in use.

There's usually a setting you can use to tell the OS to allow you to
reuse the
port once it's closed.  I don't have my Pickaxe in front of me, but I do
have
my camel book and in Perl there's a "Reuse" parameter that gets passed
to new
TCP Sockets to be able to reuse the port.  I'm guessing Webrick has
something
similiar.

> Is there an easy way I can ask Linux for a list of all the ports in use?

"netstat -at" for TCP ports.
This topic is locked and can not be replied to.