存档

文章标签 ‘转载’

十二
02

关于BTalk

暑假入了一个8700来玩, 受迫于没有一个方便而使用代价可以接受的GTalk客户端, 于是决定自己动手写一个符合自己使用习惯的客户端. 于是BTalk就这样诞生了. 到现在已经过了差不多3个月了, 但除了在google code的项目主页以及berrymail上的发布贴, 还没正式的把它记录下来过. 现在把相关的信息整理记录下来, 顺便可以记录一下开发过程的问题和经验总结, 也算是开发日志了吧.

我将BTalk定位为一个专门针对BlackBerry主流机型的,轻量级的GTalk客户端。其中轻量级主要针对目前手机上的其它综合型IM客户端而言的,BTalk不会刻意去增加其它IM的支持,不过欢迎有兴趣和时间的朋友自己进行修改;另外,由于GTalk本身就是一个XMPP协议的即时通信服务,所以理论上以后可以通过更改服务器地址的方式,来使用其它XMPP协议的IM(这个功能以后会考虑加入BTalk中)。BTalk的使用风格会尽管与官方的GTalk接近。

这里要专门说一下JXA(J2ME XMPP API)项目。JXA项目算是BTalk的鼻祖了,它是一个基于J2ME平台的XMPP协议客户端,提供了一些简单的XMPP功能,但是对目前的BTalk来说这些功能已经足够了。不过不足的一点是JXA使用了GPL许可证,使得BTalk也只能以GPL系列许可证发布,这对其它希望对BTalk进行进一步改进的朋友来说也许限制较多。后面如果有机会希望能换一个许可证更宽松的XMPP库来用。

以后关于BTalk的开发/功能细节问题的讨论我将移到这里以及google code的主页上进行。另外我个人公开的版本也都统一从这里进行发布,这样也能避免版本混乱,而用户也能及时获得通知(通过RSS订阅的方式)。如果有需要转载的朋友希望能注明出处。

最后,欢迎大家在这里或google code的BTalk页面参与BTalk相关的讨论~

, , , , ,

09

Original URL: http://yegle.net/2009/04/27/transmission-ipv6-support/

transmission是一个在linux下比较流行的bt客户端,gtk界面,支持daemon,并有方便的web前端和第三方的客户端。

transmission在大约1.50版的时候开始声明支持ipv6了,但是实际使用过程中却发现连接到byrbt的tracker时,服务端见到的ip是v4的ip,即使在/etc/hosts文件中指定了tracker的v6地址也一样。

google到了transmission的trac上有讨论这个问题(1,2)。似乎是transmission在对byrbt这样的v4/v6双栈的tracker时只解析v4地址,不解析v6地址。

trac里原文:

Brief explanation for posterity and those out of the loop: In libTransmission (pre-1.60?, that’s the plan anyway) “torrent” and “tracker” are used interchangeably. With the addition of IPv6 support, the two concepts need to be separated. This is a fairly major refactoring job. For 1.5x and in trunk currently, IPv6 DNS resolution in libcurl (the library we use for tracker communication) is disabled to prevent breakage of trackers with AAAA and A records on the same hostname (notably, TPB). For those of you coming here from #1937, the curl option to disable IPv6 “DNS resolution” apparently also causes curl to bail if given an explicit IPv6 tracker address (such as http://[::1]/announce), so that bug is the same as this one.

解决的办法很简单,修改源码里libtransmission/web.c,找到 curl_easy_setopt( easy, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );一行,将CURL_IPRESOLVE_V4修改为CURL_IPRESOLVE_V6,然后正常编译安装即可。如果同时需要使用v4的 tracker,可以把这部分修改成CURL_IPRESOLVE_WHATEVER。

实际使用效果甚好。原本都是做种很久后才有零星的ipv6的peer连接,现在连上tracker后不久就能得到ipv6的peer了

BTW,不知道为什么,transmissionbt.com也被墙了……万恶的GFW……

, , ,