[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

basic WEBrick question

Mark Volkmann

1/20/2006 4:00:00 PM

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

--
R. Mark Volkmann
Partner, Object Computing, Inc.


3 Answers

Caleb Tennis

1/20/2006 5:12:00 PM

0

On Friday 20 January 2006 10:59, Mark Volkmann 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 Volkmann

1/20/2006 6:09:00 PM

0

On 1/20/06, Caleb Tennis <caleb@aei-tech.com> wrote:
> On Friday 20 January 2006 10:59, Mark Volkmann 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?

--
R. Mark Volkmann
Partner, Object Computing, Inc.


Caleb Tennis

1/20/2006 6:19:00 PM

0


> 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.