麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

利用VB設計聊天室

2019-11-18 17:35:41
字體:
來源:轉載
供稿:網友
Internet上的聊天室一向是一個吸引人的地方,但多用C語言設計,我用VB設計了一個聊天室,取名為“升達自由論壇”,實際使用證明效果良好。

----Internet上的通訊協議是TCP/ip,Internet上數據傳輸協議主要有TCP和UDP,TCP是有連接協議,它要求計算機進行對話時必須先建立連接,保證數據傳送安全到達目的地。UDP是無連接協議,它只是將信息送到網絡上,并不檢查數據是否到達了目的地。要進行實時會話,則應該采用TCP協議。本程序采用的協議就是TCP協議。

----程序分服務和客戶程序兩部分。客戶程序啟動后首先與服務器連接,連接成功后,隨意輸入一個名字即可進入聊天室;服務程序則負責維護與每一個客戶的連接和數據交換,并且記錄下所有聊天內容,及人員名單。由于在會話過程中大家起的都是假名字,不可避免地要有的人講一些不健康內容,為了保持秩序,服務器程序實現了IP地址跟蹤功能。管理人員可以很容易地查找出每一個匿名的計算機名,并對之進行警告或其它處理(下面會進一步介紹)。可保證會話內容的健康。如果服務器程序關閉,則所有客戶程序自動關閉。

VB5的Winsock控件

----VB5企業版提供了Winsock控件,要實現兩臺計算機的對話,可以通過Winsock控件進行。而不需了解更多的數據傳輸細節,本程序就是通過Winsock進行的。

----Winsock有多種屬性、方法和事件,本文只列舉出要使用的屬性、方法和事件。

----......

----一個Winsock控件可以建立與一個計算機的聯接,服務器程序中首先設置一個Winsock控件,將其索引值設為0,以便在運行時動態增減元素,這樣可以與多個計算機進行對話。

程序介紹

----服務程序部分

----服務器程序啟動時,先設置自己的本地端口,因為有些端口有其固定的作用,如80是WWW端口,故盡可能選擇不可能使用的端口,這里我選擇了1600。將連接狀態設置為假,然后開始進行偵聽。當偵聽到有計算機要求與服務器進行對話,就接受,并記錄下客戶機的地址、端口、客戶起的匿名,將連接狀態設置為真,將上述內容存入一個用戶自定義的數組中,進行動態維護。用戶自定義數據類型如下:

PRivateTypeActiveUser
ClientIPAsString記錄客戶的IP地址
ClientNameAsString記錄客戶的匿名
ClientPortAsInteger記錄當前會話的端口
ClientConnectedAsBoolean
客戶連接狀態,True表示已連接,False表示沒有連接
EndType

----做完這些工作后,服務器再調入一個新控件,進行新的偵聽,如此反復不斷。如果有客戶退出,則關閉相應的連接。注意不能在客戶端關閉連接,否則會產生錯誤,只能由服務器關閉連接。服務器程序主要對象設置

.
.
.

----利用上述對象可以實現服務器的各種功能,當然,還可以再加入新控件,以使界面更美觀。

----服務程序中三個關鍵程序段如下:

----1.處理連接請求

----sckServer_ConnectionRequest過程處理連接請求,當遠程計算機要求連接時,服務器首先檢查用戶自定義數組中是否有空閑位置(因為在談話中途,肯定會有人退出,所以會產生空閑位置),如果有則選擇空閑位置給予要求連接的客戶,否則將數組維數加一,將之給予請求連接的遠程節點。錯誤處理主要是忽略兩個或兩個以上的客戶同時要求連接時產生的地址沖突現象。

----......

----2.處理處于連接狀態的用戶發送來的信息

----sckServer_DataArrival過程處理客戶端傳來的數據。當有數據發送過來后,服務器首先接收數據,調用自定義過程HandleOtherMessage檢查是談話內容還是其它信息,如果是其它信息,則在HandleOtherMessage中進行處理,否則在本過程中進行處理。

----因為Winsock控件將數據首先送至緩沖區,待緩沖區滿才發送信息,這顯然不能保證適時對話,用Doevents語句可確保Windows將數據及時送出。其中的錯誤處理程序處理當遠程計算機非正常關閉程序時產生的錯誤,因為此時服務器并不知道它已關閉,仍然向它發送信息,這樣就會產生錯誤,導致服務程序關閉,中斷整個談話。處理方法只是簡單地關閉掉該連接即可。

----......

----3.關閉客戶連接

----sckServer_Close過程關閉與客戶的連接,刪除控件,收回系統資源,將該位置的連接狀態設置為假,以便有用戶請求連接時繼續使用。它一般由HandleOtherMessage過程調用

----......

----如何保證聊天內容的健康是一個很重要的方面,在Internet上,我們對談話內容不健康者,只有將之開除出聊天室。但在局域網上則可以查出是誰談話不文明(局域網環境為WindowsNT4.0服務器,Windows95工作站)。方法如下:在95工作站上將網絡中的TCP/IP協議中的IP地址選項設為動態獲得IP地址,在NT服務器上用DHCP管理工具為每一個客戶機進行IP地址動態分配。聊天服務程序記錄下來了每一個客戶的IP地址,我們就可以通過DHCP管理工具很容易地查出某IP地址對應的計算機名,并進行處理。

客戶程序部分

----客戶程序啟動時首先設置服務器的地址及端口,這里我直接使用了“192.168.0.2”,這是我的服務器地址,可以在Form_load過程中設置你自己的服務器地址,也可在程序開始時讓用戶輸入服務器地址以增加靈活性。時鐘控件用以與遠程節點進行自動連接。

----......

----客戶程序主要對象設置

----......

----“”顯示所有正在聊天室中的用戶名

----顯示當前的狀態(用戶名,IP地址及是否密談)

----與服務器程序一樣,這里列出的并非全部的控件,但是已經足以完成工作。

----客戶程序中的自定義類MyMessage用來記錄自己的信息,

----......

----類中的變量cmdExitClick用來記錄用戶是否按了退出按鈕,如果是按了退出按鈕則為真。當用戶選擇了系統的窗體關閉菜單而沒有按退出按鈕時將會產生錯誤,因此用它來記錄是如何退出的,如果選擇了系統的窗體關閉菜單,則執行一次cmdExit_Click()過程,以確保無誤。

----客戶退出時,不是簡單地關閉自己的Winsock控件,而是發送一個字符串(我采用了一個大家在聊天時很難用到的字符串“=_RE”)給服務器,表明自己要退出,由服務器端關閉連接,進而關閉自身。

->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人区精品一区二区婷婷 | 国产喷白浆10p | 亚洲精品久久久久久久久久久 | 日韩av电影免费在线观看 | 精品一区二区三区中文字幕老牛 | 日韩黄色影视 | 羞羞的视频免费在线观看 | 极色品影院 | 一级黄色a视频 | 国产精品视频一区二区三区综合 | 欧美日韩免费一区二区三区 | 精品国产一区二区三区四区阿崩 | 双性精h调教灌尿打屁股的文案 | 亚洲片在线观看 | 国产一区二区视频在线播放 | 免费观看一区二区三区视频 | 亚洲精品日韩色噜噜久久五月 | 国产精品欧美日韩一区二区 | 国产羞羞网站 | 毛片免费观看视频 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 国产精品99免费视频 | 国产高清自拍一区 | 欧美黄色片免费看 | 亚洲一区二区三区四区精品 | 日韩 综合 | 亚洲午夜视频 | 久久久经典视频 | 国产精品久久久久国产精品三级 | 91美女视频在线观看 | 欧美人与牲禽动交精品一区 | 久久成人免费网站 | 国产小视频在线观看 | 日韩在线毛片 | 精品亚洲夜色av98在线观看 | 亚洲小视频网站 | 91成人免费网站 | 国产日产精品一区二区三区四区 | 毛片在线播放视频 | 亚洲特黄 | 成人免费网站在线观看 |