今天下午弄了好久总算把 pure-ftpd with libantixunlei 部署到64位系统上去了。期间调教了好久。

首先想起来长整型(long)在64位系统上是8字节,而在32位系统上是4字节。于是就出现了一些数据结构对齐的问题,这个问题弄下来以后,偶索性把所有的long都替换成了int,然后编译安装,一切顺利。

但是运行的时候,却发现主进程的消息处理线程阻塞死了,根据调试信息,子进程明明已经把消息发送出去了,但是消息处理线程硬是收不到,一直阻塞在msgrcv函数那里。

于是又折腾了好久,后来才想到,会不会是这个msg_buf_t里面用来标识消息类型的mtype是长整型的,如果这样的话,刚才我把所有的long替换成int,肯定影响到这里了。之前偶在网上看消息函数的时候,有些文章定义这个结构体的时候用的是整型,而有些文章用的是长整型,哎呀真是不严谨啊。

于是把这个结构体里面的 int mtype 改成 long mtype,编译安装运行,正常了……

所以说long和int一定要慎用啊……

cygwin 下的西语言开发笔记

[夜晚 2009年8月31日 21:51 | by gs ]

最近发现,虽然以前做了很多东西,也解决了很多问题,看似也学会了解决很多问题。而实际上,因为有些东西是很少用到的,所以很容易就会忘记。等到某天想用的时候,虽然记得以前知道怎么做,也成功做过,但是到现在就想不起细节到底是怎样的了。所以看来啊,还是应该把这些东西记起来比较好。

于是这几天在cygwin下弄libantixunlei,先记下这些东西吧。如果以后再有新发现的话,继续追加。

顺便说个趣事,我用fork()函数产生子进程,产生到300多个的时候,Windows挂掉了,表现为图形界面凝固,怎么动都没反应,只能冷启。

Tags: , , ,

做 libantixunlei 扯出来的无聊技术之二

[夜晚 2009年8月16日 22:16 | by gs ]

这回是如何高效地判断出迅雷的FTP指令序列。

这里所说的FTP指令序列是指,一个FTP会话从连接开始,到开始下载文件前,发送给服务器的FTP指令的序列。另外,指令参数是不算入指令序列里面的。

一个典型的FTP指令序列就是:USER->PASS->SIZE->PASV->RETR

做 libantixunlei 扯出来的无聊技术之一

[夜晚 2009年8月2日 22:14 | by gs ]

实际上就是一个数据结构而已,虽然偶觉得这个数据结构应该已经有人提出过了的说,但是找不到。偶把这个数据结构叫做哈希树,然后偶以哈希树为关键词查找,没找到多少结果。然后偶又以hash tree作为关键词查找,找到了维基百科,但是看上面的解释不太清楚,不过估计应该就是那样子的没错了。

弄出这个数据结构的初衷是想要保存一些FTP已登陆用户的信息,因为查找频繁,所以希望这个数据结构能提供很快的查找速度。于是想到了哈希表,但问题是,同时登陆的用户数是未知的,这样就不知道需要定义多大的哈希表,而且如果同时登陆的用户较多的话,哈希表也会变得比较大才能满足要求。

不互信的两个人之间如何交换信息

[夜晚 2009年5月22日 23:15 | by gs ]

张三和李四手上各有一个信息,张三持有信息甲,李四持有信息乙,现在双方都不知道对方手上的信息,但是又想知道对方手上的信息,于是两人想交换信息。

但问题是,张三和李四两人都不信任对方,担心自己把自己手上的信息给对方以后对方拒绝把对方的信息给自己。也就是说,张三担心自己把信息甲给了李四以后,李四拒绝把信息乙告诉张三。李四也是担心同样的情况,担心自己把信息乙给张三以后张三拒绝提供信息甲。

现在的问题是,能否在不依赖第三人的情况下,张三和李四两人就能安全可靠地完成信息交换。即张三和李四都能得到对方的信息,如果其中一人不能得到对方的信息,那么另一人也无法得到对方的信息。

是否有方法能实现这样的信息交换呢?如果不能的话,希望能以数学形式给予严格的证明。

Tags: ,
分页: 3/5 第一页 上页 1 2 3 4 5 下页 最后页 [ 显示模式: 摘要 | 列表 ]