【问题标题】:What is replacing send() in java.net.MulticastSocket?什么是在 java.net.MulticastSocket 中替换 send()?
【发布时间】:2013-10-08 07:06:59
【问题描述】:

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

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 is always 0

【问题讨论】:

  • 你考虑过阅读 Javadoc 吗?
  • @EJP,我没有。我一生只写过 12 行 java 代码,其中两行出现在上面。自从我在 2008 年第一次编写它们以来,它们一直运行良好。现在我们的新系统上显然有一个 java 版本的碰撞,这给了我这个警告。 Stack Overflow 的优点之一是特定系统的非常随意的用户可以从 caskey 等专家那里获得帮助,并且可以为其他人提供帮助。如果我要成为一名认真的 Java 程序员,我会花时间在文档上,但现在我只是感激地依赖其他人的帮助。
  • 你做错了。您应该开始阅读相关文档,然后如果您仍然卡住尝试互联网。在这种情况下,您的模具会立即得到您的答案。这就是我建议它的原因。
  • @EJP,点了。事实证明,对我来说,修复已弃用的表单并没有解决我的问题,因为存在一个 java 运行时错误,它在运行双 ipv4/ipv6 堆栈的机器上表现出来。谢谢!

标签: java deprecated multicast


【解决方案1】:

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);

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多