提交 3ff03ce6 编写于 作者: C chegar

6933618: java/net/MulticastSocket/NoLoopbackPackets.java fails when rerun

Reviewed-by: alanb
上级 ff314cac
......@@ -29,9 +29,7 @@
import java.util.*;
import java.net.*;
public class NoLoopbackPackets {
private static int PORT = 9001;
private static String osname;
static boolean isWindows() {
......@@ -68,13 +66,19 @@ public class NoLoopbackPackets {
return;
}
MulticastSocket msock = null;
List<SocketAddress> failedGroups = new ArrayList<SocketAddress>();
try {
msock = new MulticastSocket();
int port = msock.getLocalPort();
// we will send packets to three multicast groups :-
// 224.1.1.1, ::ffff:224.1.1.2, and ff02::1:1
//
List<SocketAddress> groups = new ArrayList<SocketAddress>();
groups.add(new InetSocketAddress(InetAddress.getByName("224.1.1.1"), PORT));
groups.add(new InetSocketAddress(InetAddress.getByName("::ffff:224.1.1.2"), PORT));
groups.add(new InetSocketAddress(InetAddress.getByName("ff02::1:1"), PORT));
groups.add(new InetSocketAddress(InetAddress.getByName("224.1.1.1"), port));
groups.add(new InetSocketAddress(InetAddress.getByName("::ffff:224.1.1.2"), port));
groups.add(new InetSocketAddress(InetAddress.getByName("ff02::1:1"), port));
Thread sender = new Thread(new Sender(groups));
sender.setDaemon(true); // we want sender to stop when main thread exits
......@@ -83,12 +87,10 @@ public class NoLoopbackPackets {
// Now try to receive multicast packets. we should not see any of them
// since we disable loopback mode.
//
MulticastSocket msock = new MulticastSocket(PORT);
msock.setSoTimeout(5000); // 5 seconds
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, 0, buf.length);
List<SocketAddress> failedGroups = new ArrayList<SocketAddress>();
for (SocketAddress group : groups) {
msock.joinGroup(group, null);
......@@ -103,6 +105,9 @@ public class NoLoopbackPackets {
msock.leaveGroup(group, null);
}
} finally {
if (msock != null) try { msock.close(); } catch (Exception e) {}
}
if (failedGroups.size() > 0) {
System.out.println("We should not receive anything from following groups, but we did:");
......@@ -111,9 +116,8 @@ public class NoLoopbackPackets {
throw new RuntimeException("test failed.");
}
}
}
class Sender implements Runnable {
static class Sender implements Runnable {
private List<SocketAddress> sendToGroups;
public Sender(List<SocketAddress> groups) {
......@@ -137,10 +141,11 @@ class Sender implements Runnable {
msock.send(packet);
}
Thread.currentThread().sleep(1000); // 1 second
Thread.sleep(1000); // 1 second
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册