Wait—let me get this straight.  Even if you close a socket, you've
still consumed a port number, and there's no way to free the port
numbers for re-use?

How does SO_REUSEADDR/setReuseAddress(boolean) play into this?

~~ Robert.

On Wed, Feb 2, 2011 at 5:36 PM, John Cowan <[email protected]> wrote:
> On Wed, Feb 2, 2011 at 5:24 PM, Brian Hurt <[email protected]> wrote:
>> This isn't the right venue for this question, but I'm not sure where else to
>> ask, and I'm hoping that someone here might be able to help.  Basically,
>> I've got a program that, for long involved reasons, creates lots of sockets
>> (millions).  It's closing them (clojure macros for the win), so I'm not
>> running out of descriptors, but after a while, creating new sockets start
>> throwing java.net.ConnectException: Cannot assign requested address errors.
>> This problem always starts at about the same period of time, and seems to go
>> away after a while (I'm trying to quantify how long).  Note that these are
>> client sockets, not server sockets.  The exception makes perfect sense for
>> server sockets (someone else has already bound the port you're trying to
>> bind), but not for client sockets.
>
> A new client port number is assigned every time the client opens a TCP
> connection, and there are only 65536 port numbers, so eventually you
> will run out.  I'm not familiar with how much control Java gives you
> over the underlying C socket API, but you can share client port
> numbers between sockets, as long as you make sure that two connections
> *to the same server port on the same IP address* don't share port
> numbers.
>
> --
> GMail doesn't have rotating .sigs, but you can see mine at
> http://www.ccil.org/~cowan/signatures
>
> --
> You received this message because you are subscribed to the Google Groups 
> "JVM Languages" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/jvm-languages?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en.

Reply via email to