王 巍
(中国电信股份有限公司新疆分公司,新疆 乌鲁木齐 830000)
随着互联网技术信息技术的迅猛发展以及计算机技术的广泛应用,即时通信IM(Instant Messaging)作为一种方便、高效、廉价的交流方式被广泛运用于局域网(LAN)乃至广域网(WAN)。为人们的日常交流和资源共享以及传送信息和文件提供了方便。即时通信(IM)软件应运而生,且立即风靡全球。现在我国流行的 IM软件产品种类繁多,主要有国内腾讯公司的QQ,国外的MSN、Skype、ICQ、AIM、X-lite、Yahoo Messenger等。但在广域网的限制下主流即时通信软件服务器无法连接,这时开发局域网内的即时通信软件显得尤为重要。
本软件实现设计一个局域网即时通讯软件,实现点对点、点对多即时通讯文件传输,方便在局域网下的人们工作与交流。
即时通信(Instant Messaging,IM)是随着Internet发展起来的一种使人们能在网上识别在线用户并与他们实时交换消息的实时通信技术。目前即时通信也包括文件传送、文件共享和语音视频通信等。与传统的通信方式相比,具有方便、快捷和廉价等特点。
图1 网络通信软件
该软件是提供给局域网下普通工作人员的通讯软件,没有大量的数据录入以及数据查询等操作,所以该软件不需要与数据库集成,用户选择用户名与头像登陆后,就可以与在线的其他用户进行互聊传输文件等操作,可以自己存储相关的聊天信息等。
用户为一般工作人员,考虑到一般工作人员的计算机水平以及喜好,所以软件界面不能太复杂,对于一般工作人员来说,他们登陆进入到界面时,除了要有吸引他们的界面外,还要让他们一眼就可以看到可以互聊操作的对象,以及各个按钮的功能作用,这里为每一个进入用户有相当明显的提示。
该软件模型设计见图1。
本软件面向普通工作人员这个群体,该群体相对于计算机来说的相同特征都是计算机水平较一般,甚至都有自己的聊天喜好,为了满足用户界面尽量效仿QQ等主流软件,使用户使用更加亲切。基于这些原因,软件命名为“说说”。
与常规的通讯软件不同,说说软件的登陆界面不需要输入用户名、密码等验证性的数据,因为局域网下每台计算机都有一个固定的IP地址,基于P2P理论上无需连接远程服务器。只是要求用户输入自己的昵称和选好自己的头像即可点击“进入”,进入到软件主界面,在主界面的左边的头像栏里会显示用户刚才输入的昵称与姓名。考虑到用户偏好登陆框基本采用QQ登陆框模型。本程序在此界面会得到所有的本机信息IP地址、广播域、端口号、头像号、昵称。
在PC与PC之间建立互联通讯的过程中最首要的需要了解两点信息:一个是对方IP;一个是互联端口。而在VB中为了实现网络互连特意提供了一个winsock控件为PC机之间互联建立了条件。只要在其属性中稍加设置就可以实现基本的互联,同时判断自己的IP段算出本机的广播域。由于UDP的诸多问题,本软件全部使用TCP/IP作为互联协议。
3.3.1 自动载入信息的不同方式
在本程序中最为重要的过程,即实现局域网内其他 PC机的自动载入信息。通过判断对方传来的判断数字这样的方式,实现不同 PC机上的用户进行在线用户头像自动载入,下线用户头像删除。
(1)“我来了”向广播域传送(1+用户名、IP地址、端口、主机名、头像号)。当开启本程序时向互联过程下计算出的广播域下的IP地址挨个发送此信息,提取确认头数字1后,分解内容记录后显示在listview控件中,并以广播的形式发送一个2,这是其他 PC机载入头像与昵称的基本条件,自己可以给自己的IP发送,实现自己的头像显示功能。
(2)“欢迎”传送(2+用户名、IP地址、端口、主机名、头像号)。PC机收到1时用其提供的信息进行互联并向回发送本机信息,提取确认头数字 2以后,记录后分解内容显示在listview控件中,这用来确定对方也在线。这里是与其他PC机建立互联关系的必要条件。
(3)传送“再见”(5+空)。在其广播域中发送,提取确认头数字5以后,显示在listview控件中的相关内容释放。这里是其他 PC机删除头像与昵称的基本条件,实现自己下线的显示。
3.3.2 聊天的模式
如何载入分解的内容成了本段功能的重中之重,读取对方传来的信息时头数字后跟随数据有:用户名(即昵称)、IP地址、端口、主机名、头像号。我们对这段数据进行提取在以后调用中使用。通过这样的方式我们可以实现,上线头像载入、下线用户头像自动删除的功能,这里我们载入删除的不是头像,而是事先存在程序文件下头像编号。同时我们还可以从头判定数来判断聊天模式。
(1)“单独聊天内容”传送(3+用户名、IP地址、端口、内容)。判断单独聊天地址与其进行连接进行信息传输,在这种头数字下的信息只有点对点之间的用户可以看见,在通过对其IP和端口连接下读取除判定信息后的聊天内容。
(2)“共同聊天内容”传送(4+用户名、IP地址、端口、内容)。对所有连接上的PC机进行消息传输,在这种头数字下的信息要在广播域进行消息广播,这里基本与单独判定载入相同只是由其单点改成了对多点。
为了更好的体现本软件的使用价值本程序还自带文件传输功能。而文件传输主要分为单文件传输和目录文件传输(多文件传输),本软件使用VB 包中WinSock和WinSock建立TCP/IP直连进行文件流传送。
3.4.1 单文件传输
当鼠标双击某用户头像时,会弹出与此用户传输文件的信息窗口。需要向对方传送文件,可直接将此文件添加到此窗口,为此在窗口中加入用于说明传输文件的简介,便于用户确认传输文件。先向对方发送确认接收文件信息,启动TCP/IP协议。在进行文件传输之前计算文件大小,并时刻记录文件已传输的大小与路径。
3.4.2 多文件传输
文件传输还可实现将一文件夹下的多个文件一次性传送。在传送前系统会首先传一个要传送的多个文件名所形成的目录文件,然后再依次传送每个文件,对方每接收到一个文件,先对此文件在本地的存储目录进行判断,如果此目录不存在,则建立此目录,然后再发送确认接收文件。接收成功后,循环接收下一个文件。
为了方便广大的用户,本软件安装只要一个主文件,其他相关文件设定为自动生成。如每次登录时软件自动读取第一次生成的INI文件,在Windows系统中,INI文件很多,该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。在本程序中,INI文件自动记录上次登陆信息。
在主界面中选择保存聊天记录,会在当前软件所在路径下生成CHATS.Txt,里面记录了当前聊天的所有信息。
本程序基本制作思想在于实现对等网互联通讯的实现,为了能直观体现其对等网的特点,必须制作出在线用户自动头像自动刷新、下线用户头像删除的功能。设计之初,互联信息的传播使用UDP协议在广播域中进行,但后来发现其他PC机无法读取到UDP传来的信息,分析其原因在于局域网路由分配的IP段不符合其广播域计算方式。后来采用了TCP/IP协议大大提高了信息传播的准确性与稳定性,而广播域算法也改成了取本机IP段最末位的1-255。从而实现了单路由下局域网的互联通信组播的判断。
目前,本软件可以进行单路由局域网的互联数据传输,并计算出其广播域以及本机IP地址。但是对于跨路由的PC互联来说,由于受开发软件及本人技术的限制,使软件在计算跨路由广播域时出错,无法交换信息。再次本软件由于VB控件的限制,很难实现对于多媒体流的传输实现。
利用 Visual Basic面向对象的程序设计技术开发的局域网即时通讯软件,采用TCP/IP协议并通过及定义端口互联,这样软件的执行会更加准确方便,也使程序本身变得简单。最后,软件实现了较强的通讯功能,通过局域网内的互联实现文件批量传输、断点传输等文件传输功能,基本实现了用户在局域网内即时通讯的目的。
1 王继魁. Linux下基于Shell脚本的聊天工具[J].吉林师范大学学报,2009(1):122~124
2 周 敏、李凤婷、吴为民.基于VB的PC机与多台PLC的通信研究[J].计算机工程,2009(04):103~107
3 李长林. Visual Basic串口通信技术与典型实例[M].北京:清华大学出版社,2006
4 张 岩. Delphi下的点对点聊天工具编程[A].计算机工程应用技术,2009(2):1239~1241
5 李远杰、刘渭锋.主流即时通讯软件通信协议分析[J].计算机应用研究,2005(7)
6 汪发宝、楼新远.基于P2P组播技术的局域网即时通信系统的实现[J].铁路计算机应用,2008(18)
7 王甜甜、郭全萍、马培军等.用指针实现的程序的标准化及其应用[J].哈尔滨工业大学学报,2009(41):48~53
8 斯蒂文斯.TCP/IP网络互联技术(卷 3)[M].北京:清华大学出版社,2004:156~203
9 李为民.基于网络的远程运动控制系统的设计与研究[D].武汉:武汉理工大学,2003
10 张传伟、王昀睿. VB下PLC与PC串口通信的实现[J].控制与检测,2005(12):62~66