这个projet的目标,是实现一个多用户的聊天软件~算是简易版的聊天室,只要实现基本功能就可以~~
这个项目是完完全全可以让一个
php?name=%D0%C2%CA%D6" onclick="tagshow(event)" class="t_tag">新手立刻上马的~~~
我们使用:
用ruby来编程
图形界面工具用: TK, GTK+, QT, wxWidgets,或 Fox,.....
这里我选用了GTK+
用模型DRb
连接用户和服务器
因为GTK+的缘故~要在linux下完成这个项目
基本功能的实现有以下:
1,实现聊天室的用户界面,连接一个服务器并且很容易接受应用程序的等待。
2,应用程序允许放弃一个聊天的服务器
3,在多用户中实现连接到一个服务器的文字聊天
4,在每个用户登录时更新用户信息(登录名,城市。。。。。)
根据进行的进度,我们可以附加实现以下功能:
1,保存所有的信息到服务器和用户的文件里。
2,显示表情图片。
3,传送文件。
4,用户登录界面。
5,安全的传送数据。
对于
drb,有以下一些提示:
drb的功能是非常强大和简单的实现用户和服务器之间的交流
大家可以使用模型rinda,他是模型Linda在ruby下的一个分支(
http://en.wikipedia.org/wiki/Tuple_space).
Linda的联想图
其中, tuplespace是一个放置管道的空间,他来管理应用程序的空间分配的信息,每个管道都有任意的大小,并且一般来说,一个管道是有生命时间的限制的(比如:60s)。
至于管道空间的操作有如下:
1. 写:写一个管道到管道空间里
2. 读:从管道空间读取数据,寻找你想要的管道,根据存在的尺寸和管道值的条件(比如说:第一个由message_type_ 开始的元素)
3. 取:和读一样,但是是从管道空间里删除一个管道。
下面是关于读和写的程序编码:
emitter.rb
#!/usr/bin/env ruby
require 'drb/drb'
require 'rinda/ring'
require 'rinda/tuplespace'
DRb.start_service 'druby://localhost:6666'
tuple_space = Rinda::TupleSpace.new
ring_server = Rinda::RingServer.new tuple_space
while true
tuple_space.write [:message, gets]
end
DRb.thread.join
reader.rb
#!/usr/bin/env ruby
require 'drb/drb'
require 'rinda/ring'
require 'rinda/tuplespace'
DRb.start_service
tuple_space = Rinda::RingFinger.primary
while true
puts tuple_space.take([:message, nil])[1]
end
DRb.thread.join
[
本帖最后由 yunyunlover 于 2007-12-4 13:51 编辑 ]