2011-08-25 72 views
1

在IRC DCC通信發起到其他人,你必須提供一個IP地址的連接和端口。但是,您如何在IPv6世界中處理這個問題?如何處理IPv6在IRC的DCC協議

我用Java編寫機器人的IRC框架的一部分,所以我需要能夠處理各種情況。目前似乎沒有要處理這種

我做了一些測試,以通過IPv6現有客戶的標準方式(二Teredo客戶端連接到freenode的通過IPv6

  • Chatzilla在Firefox不發送任何東西。它只是就像什麼也沒發生
  • XChat的只是將0作爲IP地址,這是不對的。

我知道有一些擴展到DCC協議發送人類可讀格式的IP地址,但那些不是標準的也不是廣泛的y支持。發送0似乎不是將來證明我的機器人的合適方式。

現在我正在將IPv6地址轉換爲BigInteger,但另一方面,弄清楚BigInteger是IPv4還是IPv6地址正在困擾着我(我在問以後會怎麼做)。

TL; DR:在IPv6環境中處理DCC的適當方式是什麼?我應該送0,我不應該在所有發送任何內容,提高在機器人,它不支持的異常,或者我應該送怪物的BigInteger?

回答

5

有對DCC沒有正式的RFC,所以只有真正明確的文件是原始CTCP規格:

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

哪一種假設的IPv4:

的地址,端口,和尺寸應作爲發送的 通過轉換值,以主機字節順序 和治療它們作爲一個無符號長,無符號短,和無符號 升形成的十進制整數的ASCII表示ong分別。

您可能要檢查什麼的mIRC和IRSSI做,因爲他們比Chatzilla和XChat的更普遍使用,也可以想出某種雙方都能接受的解決方案。

+0

1;基於此,我想說轉換爲BigInteger目前是安全的黑客攻擊。除非是回送地址,否則您可以放心地假定IPv6地址永遠不會是'UINT_MAX'或更小(4,294,967,296)。但我同意檢查其他客戶做什麼。 – mpontillo

+0

@Mike有*有*沒有「其他客戶」,因爲DCC是一個黑客反正,現在僅支持IPv4,期。 – mirabilos