"java.net.BindException: Address already in use: connect" ? ?

Discussion in 'Java' started by cmk128@hotmail.com, Jul 28, 2005.

  1. Guest

    Hi
    My java slcient connect to the server may many time by socket. My
    problem is: "socket.close()" doesn't release the local port. After
    running "new Socket()" many time, it will get "java.net.BindException:
    Address already in use: connect" exception.
    If i specify the local port to be use by "new
    Socket("localhoist",18001,InetAddress.getLocalHost(),18002)", it get
    the same error, because "socket.close()" doesn't release the port.
    thanks
    from Peter ()
     
    , Jul 28, 2005
    #1
    1. Advertising

  2. Hi,

    wrote:
    > Hi
    > My java slcient connect to the server may many time by socket. My
    > problem is: "socket.close()" doesn't release the local port. After
    > running "new Socket()" many time, it will get "java.net.BindException:
    > Address already in use: connect" exception.
    > If i specify the local port to be use by "new
    > Socket("localhoist",18001,InetAddress.getLocalHost(),18002)", it get
    > the same error, because "socket.close()" doesn't release the port.
    > thanks
    > from Peter ()


    Sounds to me like the *Socket* will be closed, but of course, the
    *ServerSocket* will not be closed as well. The ServerSocket must be
    closed explicitely.

    Ciao,
    Ingo
     
    Ingo R. Homann, Jul 28, 2005
    #2
    1. Advertising

  3. On 28 Jul 2005 02:54:18 -0700, wrote:
    > My java slcient connect to the server may many time by socket. My
    > problem is: "socket.close()" doesn't release the local port. After
    > running "new Socket()" many time, it will get "java.net.BindException:
    > Address already in use: connect" exception.
    > If i specify the local port to be use by "new
    > Socket("localhoist",18001,InetAddress.getLocalHost(),18002)", it get
    > the same error, because "socket.close()" doesn't release the port.


    It is normal for the address to remain in use for a few minutes after
    closing the Socket.

    It is however extremely unusual to care which port number is chosen by
    the client. If you don't specify a client port number, the system will
    simply choose an available one.

    If you really do need to specify the client port number, you can also
    use setReuseAddress() and the address will become available again
    immediately after you close the Socket.

    /gordon

    --
    [ do not email me copies of your followups ]
    g o r d o n + n e w s @ b a l d e r 1 3 . s e
     
    Gordon Beaton, Jul 28, 2005
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page