王 巍
(中國電信股份有限公司新疆分公司,新疆 烏魯木齊 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