basic WEBrick question

M

Mark Volkmann

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 =3D req.query['n1'].to_i
n2 =3D req.query['n2'].to_i

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

server =3D HTTPServer.new:)Port=3D>2000)
trap('INT') { server.shutdown }
trap('TERM') { server.shutdown }
server.mount("/add", AddServlet)
server.start
 
C

Caleb Tennis

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 ?
 
M

Mark Volkmann

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 Li=
nux.
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?
 
C

Caleb Tennis

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.
 

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

Forum statistics

Threads
473,968
Messages
2,570,152
Members
46,698
Latest member
LydiaHalle

Latest Threads

Top