Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7174699

No BindException when starting a ServerSocket twice on the same port.

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P4
    • Resolution: Duplicate
    • Affects Version/s: 6u32
    • Fix Version/s: None
    • Component/s: core-libs
    • Labels:
    • Subcomponent:
    • CPU:
      x86
    • OS:
      windows_7

      Description

      FULL PRODUCT VERSION :
      java version "1.6.0_32"
      Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
      Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)

      java version "1.7.0_04"
      Java(TM) SE Runtime Environment (build 1.7.0_04-b22)
      Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows [Version 6.1.7601]

      A DESCRIPTION OF THE PROBLEM :
      In a program I open a ServerSocket on port 7777 when start this program at the same time again I get a BindException as expected. This happens when I use Java 6 or Java 7. But when I use for Java 6 first to start my program and at the same time I start the same program with Java 7 (or first Java 6 and second Java 7) I don't get a BindException. When I start a client program the first started 'server' handles the incoming request. But when I close the first 'server' and I start the client again the second 'server' handles the incoming request.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      -Windows 7 64 bit
      -Open CMD and start test program with Java 6 <location jre6>\bin\java test.ServerSocketExample
      -Open CMD and start test program with Java 7 <location jre7>\bin\java test.ServerSocketExample

      Does not matter if you start the program first with Java 6 or Java 7.


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Output of first program
      Waiting for client connection on port: 7777

      Output of second program
      java.net.BindException: Address already in use: JVM_Bind
              at java.net.DualStackPlainSocketImpl.bind0(Native Method)
              at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
              at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
              at java.net.PlainSocketImpl.bind(Unknown Source)
              at java.net.ServerSocket.bind(Unknown Source)
              at java.net.ServerSocket.<init>(Unknown Source)
              at java.net.ServerSocket.<init>(Unknown Source)
              at test.ServerSocketExample.<init>(ServerSocketExample.java:13)
              at test.ServerSocketExample.main(ServerSocketExample.java:34)
      Waiting for client connection on port: 7777
      Exception in thread "main" java.lang.NullPointerException
              at test.ServerSocketExample.handleConnection(ServerSocketExample.java:24)
              at test.ServerSocketExample.main(ServerSocketExample.java:35)
      ACTUAL -
      Output of first program
      Waiting for client connection on port: 7777

      Output of second program
      Waiting for client connection on port: 7777

      netstat -a -n

      Active Connections

        Proto Local Address Foreign Address State
        TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:1098 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:1099 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:2099 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:2484 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:3528 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:3873 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:4160 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:4444 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:4446 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:4457 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:6002 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:7001 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:7002 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:7777 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:7777 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8081 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8083 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8085 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8086 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8087 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8088 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8181 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:8501 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:9535 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:9593 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:9594 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:9595 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:33354 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:37204 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:44888 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49214 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49217 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49233 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49234 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49236 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49387 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49388 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49399 0.0.0.0:0 LISTENING
        TCP 0.0.0.0:49404 0.0.0.0:0 LISTENING
        TCP 10.4.16.101:139 0.0.0.0:0 LISTENING
        TCP 10.4.16.101:1098 10.4.16.101:49397 ESTABLISHED
        TCP 10.4.16.101:3389 10.4.24.4:54862 ESTABLISHED
        TCP 10.4.16.101:8086 10.4.16.101:51915 FIN_WAIT_2
        TCP 10.4.16.101:8501 10.4.16.101:49398 ESTABLISHED
        TCP 10.4.16.101:49214 10.4.16.101:51916 TIME_WAIT
        TCP 10.4.16.101:49397 10.4.16.101:1098 ESTABLISHED
        TCP 10.4.16.101:49398 10.4.16.101:8501 ESTABLISHED
        TCP 10.4.16.101:50160 10.1.8.101:445 ESTABLISHED
        TCP 10.4.16.101:51912 10.4.16.101:1098 TIME_WAIT
        TCP 10.4.16.101:51913 10.4.16.101:49388 TIME_WAIT
        TCP 10.4.16.101:51914 10.4.16.101:1098 TIME_WAIT
        TCP 10.4.16.101:51915 10.4.16.101:8086 CLOSE_WAIT
        TCP 127.0.0.1:1434 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:6999 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:9535 127.0.0.1:50034 ESTABLISHED
        TCP 127.0.0.1:9592 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:21584 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:49203 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:49204 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:49222 0.0.0.0:0 LISTENING
        TCP 127.0.0.1:50034 127.0.0.1:9535 ESTABLISHED
        TCP 127.0.0.1:51917 127.0.0.1:53001 TIME_WAIT
        TCP 127.0.0.1:53001 0.0.0.0:0 LISTENING
        TCP [::]:135 [::]:0 LISTENING
        TCP [::]:445 [::]:0 LISTENING
        TCP [::]:1098 [::]:0 LISTENING
        TCP [::]:1099 [::]:0 LISTENING
        TCP [::]:1433 [::]:0 LISTENING
        TCP [::]:2099 [::]:0 LISTENING
        TCP [::]:3389 [::]:0 LISTENING
        TCP [::]:3528 [::]:0 LISTENING
        TCP [::]:3873 [::]:0 LISTENING
        TCP [::]:4160 [::]:0 LISTENING
        TCP [::]:4444 [::]:0 LISTENING
        TCP [::]:4446 [::]:0 LISTENING
        TCP [::]:4457 [::]:0 LISTENING
        TCP [::]:7777 [::]:0 LISTENING
        TCP [::]:7777 [::]:0 LISTENING
        TCP [::]:8081 [::]:0 LISTENING
        TCP [::]:8083 [::]:0 LISTENING
        TCP [::]:8085 [::]:0 LISTENING
        TCP [::]:8086 [::]:0 LISTENING
        TCP [::]:8087 [::]:0 LISTENING
        TCP [::]:8088 [::]:0 LISTENING
        TCP [::]:8181 [::]:0 LISTENING
        TCP [::]:8501 [::]:0 LISTENING
        TCP [::]:37204 [::]:0 LISTENING
        TCP [::]:44888 [::]:0 LISTENING
        TCP [::]:49152 [::]:0 LISTENING
        TCP [::]:49153 [::]:0 LISTENING
        TCP [::]:49154 [::]:0 LISTENING
        TCP [::]:49214 [::]:0 LISTENING
        TCP [::]:49217 [::]:0 LISTENING
        TCP [::]:49233 [::]:0 LISTENING
        TCP [::]:49234 [::]:0 LISTENING
        TCP [::]:49236 [::]:0 LISTENING
        TCP [::]:49387 [::]:0 LISTENING
        TCP [::]:49388 [::]:0 LISTENING
        TCP [::]:49399 [::]:0 LISTENING
        TCP [::]:49404 [::]:0 LISTENING
        TCP [::1]:1434 [::]:0 LISTENING
        TCP [::1]:6999 [::]:0 LISTENING
        UDP 0.0.0.0:123 *:*
        UDP 0.0.0.0:500 *:*
        UDP 0.0.0.0:1434 *:*
        UDP 0.0.0.0:4160 *:*
        UDP 0.0.0.0:4160 *:*
        UDP 0.0.0.0:4500 *:*
        UDP 0.0.0.0:5355 *:*
        UDP 0.0.0.0:7001 *:*
        UDP 0.0.0.0:9595 *:*
        UDP 0.0.0.0:33354 *:*
        UDP 0.0.0.0:33355 *:*
        UDP 0.0.0.0:38293 *:*
        UDP 0.0.0.0:55932 *:*
        UDP 10.4.16.101:123 *:*
        UDP 10.4.16.101:137 *:*
        UDP 10.4.16.101:138 *:*
        UDP 10.4.16.101:6001 *:*
        UDP 127.0.0.1:123 *:*
        UDP 127.0.0.1:6001 *:*
        UDP 127.0.0.1:53399 *:*
        UDP 127.0.0.1:58903 *:*
        UDP 127.0.0.1:60317 *:*
        UDP [::]:500 *:*
        UDP [::]:1434 *:*
        UDP [::]:4160 *:*
        UDP [::]:4160 *:*
        UDP [::]:4500 *:*
        UDP [::]:55932 *:*

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      package test;

      import java.io.IOException;
      import java.net.ServerSocket;
      import java.net.Socket;
       
      public class ServerSocketExample {
          private ServerSocket server;
          private int port = 7777;
       
          public ServerSocketExample() {
              try {
                  server = new ServerSocket(port);
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
       
          public void handleConnection() {
              System.out.println("Waiting for client connection on port: " + port);
       
              while (true) {
                  try {
                      Socket socket = server.accept();
                      socket.close();
                      //new ConnectionHandler(socket);
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
          
          public static void main(String[] args) {
              ServerSocketExample example = new ServerSocketExample();
              example.handleConnection();
          }
      ---------- END SOURCE ----------

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              Unassigned Unassigned
              Reporter:
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: