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.
