王 巍
(中國電信股份有限公司新疆分公司,新疆 烏魯木齊 830000)
隨著互聯(lián)網(wǎng)技術(shù)信息技術(shù)的迅猛發(fā)展以及計算機技術(shù)的廣泛應用,即時通信IM(Instant Messaging)作為一種方便、高效、廉價的交流方式被廣泛運用于局域網(wǎng)(LAN)乃至廣域網(wǎng)(WAN)。為人們的日常交流和資源共享以及傳送信息和文件提供了方便。即時通信(IM)軟件應運而生,且立即風靡全球。現(xiàn)在我國流行的 IM軟件產(chǎn)品種類繁多,主要有國內(nèi)騰訊公司的QQ,國外的MSN、Skype、ICQ、AIM、X-lite、Yahoo Messenger等。但在廣域網(wǎng)的限制下主流即時通信軟件服務器無法連接,這時開發(fā)局域網(wǎng)內(nèi)的即時通信軟件顯得尤為重要。
本軟件實現(xiàn)設計一個局域網(wǎng)即時通訊軟件,實現(xiàn)點對點、點對多即時通訊文件傳輸,方便在局域網(wǎng)下的人們工作與交流。
即時通信(Instant Messaging,IM)是隨著Internet發(fā)展起來的一種使人們能在網(wǎng)上識別在線用戶并與他們實時交換消息的實時通信技術(shù)。目前即時通信也包括文件傳送、文件共享和語音視頻通信等。與傳統(tǒng)的通信方式相比,具有方便、快捷和廉價等特點。

圖1 網(wǎng)絡通信軟件
該軟件是提供給局域網(wǎng)下普通工作人員的通訊軟件,沒有大量的數(shù)據(jù)錄入以及數(shù)據(jù)查詢等操作,所以該軟件不需要與數(shù)據(jù)庫集成,用戶選擇用戶名與頭像登陸后,就可以與在線的其他用戶進行互聊傳輸文件等操作,可以自己存儲相關(guān)的聊天信息等。
用戶為一般工作人員,考慮到一般工作人員的計算機水平以及喜好,所以軟件界面不能太復雜,對于一般工作人員來說,他們登陸進入到界面時,除了要有吸引他們的界面外,還要讓他們一眼就可以看到可以互聊操作的對象,以及各個按鈕的功能作用,這里為每一個進入用戶有相當明顯的提示。
該軟件模型設計見圖1。
本軟件面向普通工作人員這個群體,該群體相對于計算機來說的相同特征都是計算機水平較一般,甚至都有自己的聊天喜好,為了滿足用戶界面盡量效仿QQ等主流軟件,使用戶使用更加親切。基于這些原因,軟件命名為“說說”。
與常規(guī)的通訊軟件不同,說說軟件的登陸界面不需要輸入用戶名、密碼等驗證性的數(shù)據(jù),因為局域網(wǎng)下每臺計算機都有一個固定的IP地址,基于P2P理論上無需連接遠程服務器。只是要求用戶輸入自己的昵稱和選好自己的頭像即可點擊“進入”,進入到軟件主界面,在主界面的左邊的頭像欄里會顯示用戶剛才輸入的昵稱與姓名。考慮到用戶偏好登陸框基本采用QQ登陸框模型。本程序在此界面會得到所有的本機信息IP地址、廣播域、端口號、頭像號、昵稱。
在PC與PC之間建立互聯(lián)通訊的過程中最首要的需要了解兩點信息:一個是對方IP;一個是互聯(lián)端口。而在VB中為了實現(xiàn)網(wǎng)絡互連特意提供了一個winsock控件為PC機之間互聯(lián)建立了條件。只要在其屬性中稍加設置就可以實現(xiàn)基本的互聯(lián),同時判斷自己的IP段算出本機的廣播域。由于UDP的諸多問題,本軟件全部使用TCP/IP作為互聯(lián)協(xié)議。
3.3.1 自動載入信息的不同方式
在本程序中最為重要的過程,即實現(xiàn)局域網(wǎng)內(nèi)其他 PC機的自動載入信息。通過判斷對方傳來的判斷數(shù)字這樣的方式,實現(xiàn)不同 PC機上的用戶進行在線用戶頭像自動載入,下線用戶頭像刪除。
(1)“我來了”向廣播域傳送(1+用戶名、IP地址、端口、主機名、頭像號)。當開啟本程序時向互聯(lián)過程下計算出的廣播域下的IP地址挨個發(fā)送此信息,提取確認頭數(shù)字1后,分解內(nèi)容記錄后顯示在listview控件中,并以廣播的形式發(fā)送一個2,這是其他 PC機載入頭像與昵稱的基本條件,自己可以給自己的IP發(fā)送,實現(xiàn)自己的頭像顯示功能。
(2)“歡迎”傳送(2+用戶名、IP地址、端口、主機名、頭像號)。PC機收到1時用其提供的信息進行互聯(lián)并向回發(fā)送本機信息,提取確認頭數(shù)字 2以后,記錄后分解內(nèi)容顯示在listview控件中,這用來確定對方也在線。這里是與其他PC機建立互聯(lián)關(guān)系的必要條件。
(3)傳送“再見”(5+空)。在其廣播域中發(fā)送,提取確認頭數(shù)字5以后,顯示在listview控件中的相關(guān)內(nèi)容釋放。這里是其他 PC機刪除頭像與昵稱的基本條件,實現(xiàn)自己下線的顯示。
3.3.2 聊天的模式
如何載入分解的內(nèi)容成了本段功能的重中之重,讀取對方傳來的信息時頭數(shù)字后跟隨數(shù)據(jù)有:用戶名(即昵稱)、IP地址、端口、主機名、頭像號。我們對這段數(shù)據(jù)進行提取在以后調(diào)用中使用。通過這樣的方式我們可以實現(xiàn),上線頭像載入、下線用戶頭像自動刪除的功能,這里我們載入刪除的不是頭像,而是事先存在程序文件下頭像編號。同時我們還可以從頭判定數(shù)來判斷聊天模式。
(1)“單獨聊天內(nèi)容”傳送(3+用戶名、IP地址、端口、內(nèi)容)。判斷單獨聊天地址與其進行連接進行信息傳輸,在這種頭數(shù)字下的信息只有點對點之間的用戶可以看見,在通過對其IP和端口連接下讀取除判定信息后的聊天內(nèi)容。
(2)“共同聊天內(nèi)容”傳送(4+用戶名、IP地址、端口、內(nèi)容)。對所有連接上的PC機進行消息傳輸,在這種頭數(shù)字下的信息要在廣播域進行消息廣播,這里基本與單獨判定載入相同只是由其單點改成了對多點。
為了更好的體現(xiàn)本軟件的使用價值本程序還自帶文件傳輸功能。而文件傳輸主要分為單文件傳輸和目錄文件傳輸(多文件傳輸),本軟件使用VB 包中WinSock和WinSock建立TCP/IP直連進行文件流傳送。
3.4.1 單文件傳輸
當鼠標雙擊某用戶頭像時,會彈出與此用戶傳輸文件的信息窗口。需要向?qū)Ψ絺魉臀募芍苯訉⒋宋募砑拥酱舜翱冢瑸榇嗽诖翱谥屑尤胗糜谡f明傳輸文件的簡介,便于用戶確認傳輸文件。先向?qū)Ψ桨l(fā)送確認接收文件信息,啟動TCP/IP協(xié)議。在進行文件傳輸之前計算文件大小,并時刻記錄文件已傳輸?shù)拇笮∨c路徑。
3.4.2 多文件傳輸
文件傳輸還可實現(xiàn)將一文件夾下的多個文件一次性傳送。在傳送前系統(tǒng)會首先傳一個要傳送的多個文件名所形成的目錄文件,然后再依次傳送每個文件,對方每接收到一個文件,先對此文件在本地的存儲目錄進行判斷,如果此目錄不存在,則建立此目錄,然后再發(fā)送確認接收文件。接收成功后,循環(huán)接收下一個文件。
為了方便廣大的用戶,本軟件安裝只要一個主文件,其他相關(guān)文件設定為自動生成。如每次登錄時軟件自動讀取第一次生成的INI文件,在Windows系統(tǒng)中,INI文件很多,該文件主要存放用戶所做的選擇以及系統(tǒng)的各種參數(shù)。用戶可以通過修改INI文件,來改變應用程序和系統(tǒng)的很多配置。在本程序中,INI文件自動記錄上次登陸信息。
在主界面中選擇保存聊天記錄,會在當前軟件所在路徑下生成CHATS.Txt,里面記錄了當前聊天的所有信息。
本程序基本制作思想在于實現(xiàn)對等網(wǎng)互聯(lián)通訊的實現(xiàn),為了能直觀體現(xiàn)其對等網(wǎng)的特點,必須制作出在線用戶自動頭像自動刷新、下線用戶頭像刪除的功能。設計之初,互聯(lián)信息的傳播使用UDP協(xié)議在廣播域中進行,但后來發(fā)現(xiàn)其他PC機無法讀取到UDP傳來的信息,分析其原因在于局域網(wǎng)路由分配的IP段不符合其廣播域計算方式。后來采用了TCP/IP協(xié)議大大提高了信息傳播的準確性與穩(wěn)定性,而廣播域算法也改成了取本機IP段最末位的1-255。從而實現(xiàn)了單路由下局域網(wǎng)的互聯(lián)通信組播的判斷。
目前,本軟件可以進行單路由局域網(wǎng)的互聯(lián)數(shù)據(jù)傳輸,并計算出其廣播域以及本機IP地址。但是對于跨路由的PC互聯(lián)來說,由于受開發(fā)軟件及本人技術(shù)的限制,使軟件在計算跨路由廣播域時出錯,無法交換信息。再次本軟件由于VB控件的限制,很難實現(xiàn)對于多媒體流的傳輸實現(xiàn)。
利用 Visual Basic面向?qū)ο蟮某绦蛟O計技術(shù)開發(fā)的局域網(wǎng)即時通訊軟件,采用TCP/IP協(xié)議并通過及定義端口互聯(lián),這樣軟件的執(zhí)行會更加準確方便,也使程序本身變得簡單。最后,軟件實現(xiàn)了較強的通訊功能,通過局域網(wǎng)內(nèi)的互聯(lián)實現(xiàn)文件批量傳輸、斷點傳輸?shù)任募鬏敼δ埽緦崿F(xiàn)了用戶在局域網(wǎng)內(nèi)即時通訊的目的。
1 王繼魁. Linux下基于Shell腳本的聊天工具[J].吉林師范大學學報,2009(1):122~124
2 周 敏、李鳳婷、吳為民.基于VB的PC機與多臺PLC的通信研究[J].計算機工程,2009(04):103~107
3 李長林. Visual Basic串口通信技術(shù)與典型實例[M].北京:清華大學出版社,2006
4 張 巖. Delphi下的點對點聊天工具編程[A].計算機工程應用技術(shù),2009(2):1239~1241
5 李遠杰、劉渭鋒.主流即時通訊軟件通信協(xié)議分析[J].計算機應用研究,2005(7)
6 汪發(fā)寶、樓新遠.基于P2P組播技術(shù)的局域網(wǎng)即時通信系統(tǒng)的實現(xiàn)[J].鐵路計算機應用,2008(18)
7 王甜甜、郭全萍、馬培軍等.用指針實現(xiàn)的程序的標準化及其應用[J].哈爾濱工業(yè)大學學報,2009(41):48~53
8 斯蒂文斯.TCP/IP網(wǎng)絡互聯(lián)技術(shù)(卷 3)[M].北京:清華大學出版社,2004:156~203
9 李為民.基于網(wǎng)絡的遠程運動控制系統(tǒng)的設計與研究[D].武漢:武漢理工大學,2003
10 張傳偉、王昀睿. VB下PLC與PC串口通信的實現(xiàn)[J].控制與檢測,2005(12):62~66