如何在IRC的DCC协议中处理IPv6

时间:2011-08-25 19:57:25

标签: java ipv6 irc

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

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

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

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

我知道DCC协议有一些扩展,它们以人类可读的格式发送IP地址,但这些扩展不是标准的,也不是广泛支持的。发送0似乎不是我的机器人未来证明的合适方式。

现在我正在将IPv6地址转换为BigInteger,但另一方面弄清楚BigInteger是IPv4还是IPv6地址让我感到困惑(我之后会问如何做到这一点)。

TL; DR:在IPv6环境中处理DCC的适当方法是什么?我应该发送0,我是否应该发送任何内容并在机器人中引发其不受支持的异常,或者我应该发送怪物BigInteger?

1 个答案:

答案 0 :(得分:5)

DCC没有正式的RFC,因此唯一真正的权威文件是最初的CTCP规范:

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

哪种假设IPv4:

  

地址,端口和大小应以ASCII表示形式发送   通过将值转换为主机字节顺序形成的十进制整数   并将它们视为无符号长,无符号短,并且未签名   分别很长。

您可能想查看mIRC和irssi的用途,因为它们比Chatzilla和XChat更常用,并且可能提出了某种双方都可以接受的解决方案。