-1

我正在移植一些旧代码,并收到此弃用通知。我应该将其升级到什么?

warning: [deprecation] send(java.net.DatagramPacket,byte) in java.net.MulticastSocket has been deprecated
        socket.send(packet,(byte)ttl);

这是有问题的代码:

packet = new DatagramPacket(msg, msg.length, address, port);
socket.send(packet,(byte)ttl);

更新:

如果您在设置 TTL 时遇到问题(即,当您查看数据包时,TTL 始终为 1),那么更新此代码将无济于事(尽管它确实会使弃用警告消失)。您可能遇到过这里讨论的 Java 运行时错误:

Java Multicast Time To Live 始终为 0

4

1 回答 1

2

javadocs 在弃用声明http://docs.oracle.com/javase/6/docs/api/java/net/MulticastSocket.html#send(java.net.DatagramPacket,%20byte)中准确地告诉您要做什么

// Deprecated. Use the following code or its equivalent instead:
int ttl = mcastSocket.getTimeToLive();
mcastSocket.setTimeToLive(newttl);
mcastSocket.send(p);
mcastSocket.setTimeToLive(ttl);
于 2013-09-05T22:12:24.547 回答