第一百八十四章即时通信软件
网站上线之后,马修、亚瑟和皮森三个人将这个消息告诉了自己经常联系的朋友,由于他们以前平时在学校并不是很受欢迎,他们的朋友也大多都是在技术类bbs上认识的。
然而,马修他们还是低估了大家对sam协会官方bbs的期待感。
到晚上十二点半的时候,林鸿突然发现telcom客户端提示无法连接到服务器。
“难道被入侵了?”这是林鸿的第一个想法。
上面提示的信息,主要意思是由于连接数过多而拒绝服务。
他尝试了几次,发现还是如此。
这个时候,亚瑟也再次敲响了他的房门,结果被告知,他那边也一样。
出现这种情况有两种可能,一种就是被人黑了,导致服务器拒绝服务,另外一种则是真的访问的人数过多,服务器过载,无法承担这么多人访问。
亚瑟连忙给马修打了个电话,询问他那边的情况,结果他说能够访问,不过速度非常缓慢。
林鸿再次尝试了几次之后,终于重新登录进去,内容刷新的速度的确非常慢。
然后,亚瑟让他登录到bbs的管理后台,看了一下统计人数,结果显示有同时超过一千人在线。
结果很明了了,网站出现故障,是因为一时间访问人数过多,而服务器只有一根线路,一时间无法承担这么多人同时刷新访问,这才提示错误。
他们根本没想到,仅仅是因为之前他们和自己的朋友宣传了一下自己的网站,结果一传十,十传百,大家一窝蜂地都涌了进来。
这种情况让sam小组的成员又惊又喜,马修已经在考虑是不是有必要要增加线路了。
好在这一拨流量浪潮来得快也去得快,很快bbs就恢复了正常访问,而这个时候,论坛中已经出现了很多回帖和新帖。
尤其是林鸿发布的那片教程,受到了很多人的称赞,不少人都表示,响应林鸿的号召,开始着手破解自己手中不是德州仪器品牌的其他计算器。
在接下来几天中,sam小组开始了缓慢扩张的步伐。
很多人都在论坛中提交了自己的作品,并且希望加入sam协会,成为这个小组当中的一员。
不过,马修对会员的控制倒是蛮严格的,在达到标准的几十个人当中,只挑选了五人,然后再召开协会会议,大家对这五人进行讨论,再淘汰了两人之后,sam协会便有了7名成员。
考虑到懂硬件方面的人比较少,新增加的三位当中,有两位是对硬件比较精通的。并且这三人都不是拉丁学校的成员,其中一位还是麻省理工学院的大学生。
由于有了其他人的加入,林鸿的工作大为减轻,他这几天都在研究即时通讯软件方面的内容。
上次他就已经注意到,因为系统平台的不同,他和其他几位成员交流起来有点困难,因为他的计算机操作系统是微软的dos,而其他三个都是苹果公司的,连硬件架构都不同,更别说操作系统以及应用软件了。
现在又有新的成员加入,并且还不是同一个学校的,平时他们进行交流沟通的时候,就出现了困难。急需一款能够跨平台的即时聊天软件,并且最好是能支持多人同时聊天的。
林鸿这些天都在查找这方面的资料,途径主要是学校图九天文学。
他了解到,即时通讯软件实际上早在六十年代就已经出现了,刚开始的时候是出现在多用户操作系统中,例如ctss(兼容分时)系统和multics(unix的前身)操作系统。
最初的时候,即时通信功能是被用来作为系统服务而开发的,例如“打印”或者“邮件”进程,普通用户和系统管理员之间,通常会用短信息或通知进行信息交流。
后来,开始用于局域网各计算机之间的通信。例如,林鸿第一次在学校机房上课的时候,亚瑟入侵他的计算机,使用的就是操作系统中自带的这样一个局域网通信功能。
互联网兴起之后,这些协议通信协议被越来越多的技术人员所了解,逐渐在各大主流操作系统上出现了一些即时通信软件。这些软件使用协议基本可以分为两种协议架构,一类是基于点对点,也即客户端和客户端直接进行通联,另外一类则需要客户端和服务器联系,然后再由服务器进行中级转发。
点对点的通讯比较简单,就和打电话一样,必须两人同时在线才能进行联系,如果有一方网络并不是很好,或者对方并不在线的话,通讯显然就不能进行。还有一点,点对点通信只能同时和一个人进行通联。
而服务器和客户端的架构,这类似bbs,有一台专门的服务器作为“中央枢纽”,大家都和这个“中央枢纽”联系,例如告诉他,我要发信息给某某,麻烦帮我转发一下。这样,就算对方当时不在线,等对方在线的时候,服务器再发给他也行,这就是延迟发送。
并且,第二种架构还有一个优点,那就是可以进行群聊,一个人对多人发送信息,让建立聊天室有了可能。
亚瑟和马修之前进行联系的那个名为xaric的通信软件,就是建立在这个架构之上。
林鸿专门针对这个软件进行了研究,发现这个软件所使用的协议是irc协议。
这个协议是1988年由芬兰人雅尔口*欧伊卡林恁开发出来的,是一个互联网实时文本消息协议,是专门为了bbs或团体成员之间进行内部沟通交流而设计的,允许点对点,也允许一对多,甚至还包括了文件共享方面的内容。
林鸿了解了一下,发现这个协议是公开的,也就是说向所有人都免费开放,就像是其他常见的tcpip,udp,ftp协议那样,可以随意使用,无论是用于商业用途和个人用途。
林鸿对其心生佩服,在科学技术的发展史上,不知道有多少这样的人做着贡献,从最开始的电子技术、无线电技术、到现代的电话技术、计算机技术,正是有着这些技术前辈们的无私奉献,做着基础方面的建设,才能够逐渐发展到今天。
林鸿心中琢磨着,这个软件自己编写出来之后,也免费给大家使用,贡献一份自己的力量。
林鸿之前去学校图书馆找了一下,并没有看到有关irc协议方面的资料,后来他又问了一下亚瑟和马修,他们两个也不知道到哪里能找到这方面资料。
后来他不得不去一些技术论坛进行询问,最终终于有一个人告诉他一个bbs讨论组的地址,林鸿登录到那个讨论组,最终找到了原作者的email地址,于是他向原作者雅尔口尝试着发了一封邮件,林鸿在邮件中明确地告诉他,自己想要编写一个基于irc协议上的软件,想要irc协议的细节。
原本还要等上一段时间,却没想到不到半个小时就收到了作者的回信。
雅尔口对于有人加入到irc协议软件开发的行为感到非常高兴,对于每一个人,他都会尽自己最大的努力去帮助别人,提供便利。
在邮件中,他给林鸿发来了详细的协议技术细节,而且还包括最新的升级版本,包括频道加密和更便利的文件共享功能。
原本,林鸿只想编写一个用于团队内部进行交流的沟通软件,这样,只需要有一个服务器端就行了,其他的都作为客户端和服务器端连接。
但是阅读了雅尔口的最新irc协议之后,他决定扩充一下之前所构想的软件功能,不局限于一个服务器端,而是多个,即在软件中同时集成服务器端和客户端。也就是说,每一个用户都可以将自己作为中继服务器,给大家提供服务。并且,服务器端之间也可以进行通联。
实际上,这种架构和业余无线电非常相似。在无线电通信中,有一种特殊电台称为“无线中继台”,能实现信号的中继和放大,从而延伸无线电网络的覆盖范围。
在无线电发明的早期,人们还没有发现短波信号的远距离传播特性,而中、长波无线电地波通信因为大地吸收损耗,距离有限。早期的业余无线电爱好者就通过人工中转的办法来扩大通信范围。原理和接力一样,通过火腿志愿者地热心帮助,火腿们可以仅仅通过长波就可以将无线电信号送至大洋彼岸,甚至地球的另外一端
林鸿决定修改架构,让每一个客户端都同时具备“中继台”功能,从而可以极大地增强整个即时通信系统的稳定性。因为如果仅仅只有一个服务器端的话,一旦这台服务器由于某种原因出现问题,那么其他人之间的通信就会根本无法进行。
而重新设计之后的架构则不会如此,如果其中一个节点损坏,消息还是可以通过另外一个节点传输到目的地。这其中信息传输的路径从理论上来讲有无数条,只要通过最短路径算法找出最短的那条即可。
至于编写这个软件的语言,林鸿最终选择了c语言,他在刚开始的时候就考虑到了跨平台的需要,目前他所接触到的高级语言中,只有c语言能够满足这个要求。
……