Description
Run following simple test case, got different results from RI:
public static void main(String[] args) throws SocketException, IOException {
InetSocketAddress sa = InetSocketAddress.createUnresolved("localhost",0);
new DatagramSocket().send(new DatagramPacket(new byte[272], 3, sa));
}
RI 5:
Exception in thread "main" java.lang.NullPointerException: null address || null buffer
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:612)
at DST2.main(DST2.java:10)
Harmony 5: No Exception
RI 6:
Exception in thread "main" java.lang.IllegalArgumentException: unresolved address
at java.net.DatagramPacket.setSocketAddress(DatagramPacket.java:295)
at java.net.DatagramPacket.<init>(DatagramPacket.java:123)
at java.net.DatagramPacket.<init>(DatagramPacket.java:158)
at DST2.main(DST2.java:10)
Harmony 6: No Exception
According to the spec, InetSocketAddress.createUnresolved() says "A port number of zero will let the system pick up an ephemeral port in a bind operation."
But DatagramPacket just says "throws IllegalArgumentException - if address type is not supported"
Harmony's behavior should be as same as RI's
Attachments
1.
|
[classlib][luni]DatagramSock do NOT throw Exception | Closed | Unassigned | |
2.
|
[java6][classlib][luni]DatagramSock do NOT throw IllegalArgumentException | Closed | Regis Xu |