gpt4 book ai didi

java - IRC的DCC协议(protocol)中如何处理IPv6

转载 作者:行者123 更新时间:2023-11-29 08:12:39 31 4
gpt4 key购买 nike

在 IRC DCC 通信中,要启动连接,您必须向对方提供 IP 地址和端口。但是,您如何在 IPv6 世界中处理这个问题?

我正在用 Java 编写机器人的 IRC 框架部分,因此我需要能够处理各种情况。似乎没有标准的方法来处理这个问题

我对现有客户端通过 IPv6 进行了一些测试(两个 Teredo 客户端通过 Ipv6 连接到 freenode

  • Firefox 中的 Chatzilla 不发送任何内容。就像什么都没发生一样
  • Xchat 只发送 0 作为 IP 地址,这是错误的。

我知道 DCC 协议(protocol)有一些扩展,可以以人类可读的格式发送 IP 地址,但这些扩展不是标准的,也没有得到广泛支持。发送 0 似乎不是对我的机器人进行 future 验证的合适方法。

现在我正在将 IPv6 地址转换为 BigInteger,但在另一端弄清楚 BigInteger 是 IPv4 还是 IPv6 地址让我很困惑(我问的是稍后如何做)。

TL;DR:在 IPv6 环境中处理 DCC 的合适方法是什么?我应该发送 0,我应该根本不发送任何东西并在不支持的机器人中引发异常,还是应该发送怪物 BigInteger?

最佳答案

没有针对 DCC 的官方 RFC,因此唯一真正权威的文档是原始的 CTCP 规范:

http://www.irchelp.org/irchelp/rfc/ctcpspec.html

哪种假定 IPv4:

The address, port, and size should be sent as ASCII representations of the decimal integer formed by converting the values to host byte order and treating them as an unsigned long, unsigned short, and unsigned long respectively.

您可能想检查一下 mIRC 和 irssi 的作用,因为它们比 Chatzilla 和 XChat 更常用,并且可能已经提出了某种相互都能接受的解决方案。

关于java - IRC的DCC协议(protocol)中如何处理IPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196433/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com