FIX: DatagramSocket Causes Security Exception


Creating a DatagramSocket generates the following exception in your Java
cannot access port 0
NOTE: This exception may also occur on a port other than zero.


The Microsoft virtual machine incorrectly implements creating a
DatagramSocket as a trusted network operation. The correct behavior would
be to only treat the act of using the DatagramSocket to communicate with a
computer other than the computer hosting the applet is a trusted operation.


To workaround this problem, you must make your applet trusted. See the
"REFERENCES" section below for articles explaining how to make your applet


Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was corrected in Microsoft virtual machine 31xx and later builds.


Steps to Reproduce Behavior

  1. Create the following file, naming it

    // ======================import java.awt.*;import*;public class DatagramSocketDemo extends java.applet.Applet {  Label label=new Label("");  public void init() {    setLayout(new BorderLayout());    add(new Button("Click me to create a Datagram"),"North");    add(label,"Center");  }  public boolean action(Event ev, Object ob) {    try {      DatagramSocket ds=new DatagramSocket(9000);      System.out.println("Succeeded");      label.setText(        "Bug Fixed -- successfully created a DatagramSocket."      );    } catch (SocketException ex) {      ex.printStackTrace();      label.setText("SocketException: "+ex.getMessage());    } catch ( ex) {      ex.printStackTrace();      label.setText("Bug -- SecurityExceptionEx:  "+ex.getMessage());    }    return true;  }}
  2. Compile the file, creating a
  3. Create an HTML file named DatagramSocketDemo.html with the following
    <HTML><HEAD><TITLE>DatagramSocketDemo</TITLE></HEAD><BODY><APPLET CODE=DatagramSocketDemo width=600 height=100></APPLET><HR><A HREF="">The source.</a></BODY></HTML>
  4. Put, DatagramSocketDemo.class, and
    DatagramSocketDemo.html in the same folder on your Web server.
  5. Open DatagramSocketDemo.html from Internet Explorer.
  6. Click the button in the applet.
  7. You should to see the message "bug - SecurityExceptionEx:
    cannot access port 9000"


For other information on making your code trusted, please see the Microsoft
SDK for Java documentation, available at the following Web site:

For additional information, please see the following articles in the
Microsoft Knowledge Base:

181374 INFO: Related Component Download Articles
175622 PRB: SecurityExceptionEx Exception Running a Java Applet
For additional information on making your Java Code trusted in Microsoft
Internet Explorer, please refer to the following Knowledge Base article:

193877 HOWTO: Make your Java Code Trusted in Internet Explorer


Id. de artículo: 186032 - Última revisión: 02/14/2017 - Revisión: 1

Microsoft Virtual Machine for Java, Microsoft Software Development Kit for Java 2.02, Microsoft Software Development Kit for Java 2.02, Microsoft Software Development Kit for Java 2.01, Microsoft Software Development Kit for Java 2.02, Microsoft Software Development Kit for Java 2.02, Microsoft Software Development Kit for Java 3.0, Microsoft Software Development Kit for Java 3.1