我想用DELPHI做一个类似IRC的东东,大家能给我些什么建议吗?(100分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间
看懂IRC的协议就可以了,他是基于文本命令的.
 
漏洞多多
 

与程序语言一样,mIRC提供了它自已的一系列函数,利用各种函数能写出功能很强大的代码,并且很能体现自已的风格与特色,要想用好各种函数,你必须了解函数在调用时附加的各个参数,你必须按照函数预先定认的格式去调用。
mIRC的函数大致可分为七种,在这里介绍第一部分IRC函数
$asctime(N,format) 可以以文本格式返回当前的时间与日期,format参数格式看这里,N参数可以省略。
$asctime(dd/mm/yyyy) 返回12/15/1999
$asctime(hh:nn:ss)返回14:03:25
$ctime 返回以你系统时间1/1/1970年00:00:00至现在已经过去的秒数。
$ctime(text) 返回你指定时间至现在已过去的秒数。
$ctime(January 1 1970 00:00:00)
$ctime(3rd August 1987 3:46pm)
$ctime(21/4/72 1:30:37)
$ctime(Wed 1998-3-27 21:16)
$date 返回当前日期,格式为:日/月/年
$day 返回当天的星期,如返回Monday,Tuesday,等等。
$fulldate 返回如下格式的当前时间: Wed Jun 26 21:41:02 1996。
$gmt 返回当前的GMT时间。
$ltimer 返回你用/timer命令运行的最后一个时钟开始到现在的时间。
$online 返回你最近一次连接的在线时间秒数。
$time 返回当前时间,格式为:小时:分:秒
$timer(N/name) 返回时钟在当前时钟序列中的ID号。
$timer(0)返回当前正在运行的时钟。
$timer(1)返回时钟序列中第一个时钟的ID号。
$timer(1).com返回在第一个时钟计时器中触发的命令行。
$timer(3).type返回第三个时钟在序列中的工作状态。
$timer(3).secs返回第三个时钟从触发开始到现在的秒数。
+-------------------+
| 二,文件与目录类:|
+-------------------+
$abook(nick,N) 返回昵称在address book中的信息。
它的成员包括nick, info, email, website, picture, noteN
$alias(N/filename) 返回在别名文件中装载的第N个文件的文件名,如果你指定一个文件做为参数,如果文件没有被装载,则返回$null
$dir,$sdir,$file,$hfile 弹出一个自已构造的目录或文件选择对话框,允许你选择一个目录或一个文件。
$dir[="Select a file"] <路径或者文件名>
$sdir[="Select a directory"] <路径>
$file[="Select a file"] <路径或者文件名>
$hfile[="Select a file"] <路径或者文件名>
如:Play A Wave:/splay $file="Choose a wave!" c:/mywaves/*.wav
$disk(C) 返回指定的硬盘的信息。它的成员包括type,free.lable
如:$disk(c:),如果c:不存在则返回$null
$exists(filename) 如果文件存在则返回$true,否则返回$false
$finddir(dir,wildcard,N,depth) 在指定的目录与其子目录中查找符全条件的目录,如该目录存在则返回目录的全路径。
如:$finddir(c:/,mirc*,1)则在c:找以mirc开头的第一个出现的目录名。
$findfile(dir,wildcard,N,depth) 与$finddir使用参数一样。
如:$findfile(c:/mirc,*.exe,1)则在c:盘mirc目录下查找第一个以exe为扩展名的文件
$getdir 返回在DCC选项中设置的DCC收取文件存放目录。
$isdir(dirname) 如果指定的dir存在则返回$true,否则返回$false。
$isfile(filename) 与上一个函数一们,是用来查看文件是否存在的。
$lines(TxtFilename) 返回指定文本文件的总行数。
$logdir 返回在选项对话框中设置的Log文件存放目录。
$mididir 返回在选项对话框中设置的midi文件存放目录。
$mircexe 返回mirc可执行文件的全路径。
$nofile(filename) 返回指定文件的全路径,但不包括文件名在内。
$nopath(filename) 返回指定文件的文件名,即去掉目录路径部分。
$mircdir 返回mIRC可执行文件所在的目录路径。
$mircini 返回mIRC使用的主INI文件,通常都是mirc.ini。
$read 从指定文件中读出一行放到指定位置。
如:/say $read c:/funny.txt,从c盘funny.txt中随机读出一行发送出去。
/say $read -l24 c:funny.txt,从c盘funny.txt中读出第24行发送出去。
$readini 读取INI文件。
如:$readini c:mirc/mirc.ini option name读mirc.ini中option段的name值。
$wavedir 返回在选项对话框中设置的wave文件存放目录。
+-------------------+
| 三,昵称与地址类:|
+-------------------+
$address(nick,N) 返回指定昵称的mask串,返回值有以下几种类型:
0: *!user@host.domain
1: *!*user@host.domain
2: *!*@host.domain
3: *!*user@*.domain
4: *!*@*.domain
5: nick!user@host.domain
6: nick!*user@host.domain
7: nick!*@host.domain
8: nick!*user@*.domain
9: nick!*@*.domain
如:$address(OldHawk,2)驼回*!*@203.93.3.124
$chancom(nick,N) 返回指定昵称所在的频道信息。它的成员有op,help,voice
如:$chancom(nick,0)返回nick当然进入的房间总数。
$chancom(nick,1)返回nick进入的第一个房间的名字。
$chancom(nick,1).op如果nick在进入的第一个房间有op,则返回$true
$level(address) 返回指定地址的人在用户列表中的级别值。
$link(N) 返回第N个links连接的服务器信息。它的成员有ip,addr,level,info
$mask(address,N) 从给定的定地址中返回指定类型的mask。类型与$address中的类型一样。
$me 返回你当前正在使用的昵称名字。
$nick(#,N/nick,aohvr,aohvr) 返回当前频道内的昵称列表内的昵称信息。
a = all nicks, o = ops, h = helpers, v = voiced, r = regular
第一个aohvr是被包含的选项,第二个aohvr是被排除的选项。
如:$nick(#oldhawk,0)返回频道oldhawk中的昵称总数。
$nick(#oldhawk,1)返回频道oldhawk中的第一个昵称的名字。
$nick(#oldhawk,1,o)返回频道oldhawk中的第一个有帽子的名字。
$nick(#oldhawk,0,a,o)返回频道oldhawk中没有帽子的昵称总数。
$notify(N/nick) 返回你的通知列表的用户信息。它的成员有 ison, note, sound, whois
如:$notify(0)返回你的通知列表的昵称总数。
$notify(3)返回你的通知列表中的第三个昵称。
$notify(3).ison如果你的第三个通知昵称目前在线,则返回$true
$snicks 返回一个字串,包括你当前选中的所有昵称,格式为:
nick1,nick2,nick3,......nickn
$snick(#,N) 返回在昵称列表中你选中的第N个昵称名字。
如:$snick(0)返回你当前选中的昵称总数。
$snick(3)返回你当前选中的第三个昵称的名字。
$snotify 返回当前在通知列表中选中的昵称名字。
先给你这些,还要吗?
http://home.etang.com/mIRC/
怎么样??
 
请注意,是:
"类似<b>IRC</b>的东东", 不是"类似<b>mIRC</b>的东东"

IRC和mIRC可是2码事.
 
做这种东西比较难。我曾经写过一个类似mIRC的聊天室,后来遇到的问题不计
其数,主要是网络溢出,延迟,和掉线的问题,搞得头都大了。:-(
 
旧事重提
 
呵呵,试试在linux下开发吧。
 
要是我的话,本着偷懒的良好品质,就从microsoft拉一个irc ocx(真的有啦)
那是一个不可见的控件。然后用delphi写个界面出来...
搞定!
 
irc 有那么难吗???
 
在Delphi internet 控件中有一組很有名的 ICS
(http://users.swing.be/francois.piette/indexuk.htm)
這裡有一位朋友用了它寫了一個 IRC 控件,
(http://users.bigpond.net.au/tinyduck/IRCClient.zip)
有興趣的朋友, 可以研究一下, 很有幫助哦!

 
你是要写irc client还是irc server?
如果是Server,我劝你趁早收手,又麻烦,用delphi也写不好,不大会比IRCD在短小精悍而功能强大了.
如果是client,还比较简单,但不知道你是想写基于web的还是普通的exe?
如果是普通的exe,那你去看看RFC1459,把irc的协议搞搞清楚就可以了.
如果是基于web的,比较麻烦一点.不过肯定是可以实现的.
需要详细信息,可以继续讨论.
 
我看一是看懂rfc1459,二可以找个例子看看(没有基于win的,基于linux的是有的),乘下的就是做个界面了
 
Jetideas:

请问你碰到些什么问题 ?? 能说一下吗 ?

 
to 小天:
你现在做了哪些好东东?
 
我想做自己的IRC服务器,该怎么做呢?
 
NT 下的还是 linux ?
说说具体构思吧,我也在考虑是不是利用这段时间没事干,写个 irc server
 
多人接受答案了。
 
后退
顶部