線上遊戲多半是商業產品,通常必須掌握使用者的身分,也就是必須以伺服端已經知道的帳號與密碼登入才能取得連線開始遊戲。要建立這種機制首先伺服端要建立帳號密碼資料庫,客戶要求連線時不只是聲稱自己的名字(帳號)而已,還必須傳送合法的密碼,經過伺服端程式檢視資料庫,真的有這組帳密才能允許登入。

使用Access建立帳密資料表
開啟Office系列軟體的Access,建立一個空白資料庫,第一個畫面大概如下:

按下右下角的建立圖示後畫面如下:

按下左上角的檢視後會出現要求存檔的視窗,存檔後會進入欄位定義的畫面請輸入帳號密碼如下:

再由左上角的檢視按鍵回到資料頁面輸入幾筆帳密資料,儲存檔案之後即可離開,請記得檔案位置,預設是在我的文件:


伺服端程式的修改

載入資料庫
本範例將以聊天室單元之程式為基礎,原先版本只需任意告知伺服端一個名稱都會自動上線,現在必須審查帳密,第一步當然是伺服器程式必須與資料庫連結,最簡單的方式是先在伺服器程式表單加入一個DataGridView物件(工具箱的資料類別),接著按下該物件右上角的小箭頭標示,依指示逐步操作連結到剛剛建立的資料表,如下圖:

完成資料連結後執行程式畫面大概如下:


登入時檢查帳密的程式
原程式中要求登入的命令碼是"00",處理程式在 Listen副程式中,我們需要更改的就是這段程式碼,原來狀況是這樣的:

其中的Str原本應該是使用者自行報上的名字,現在應該是包括帳密的字串,我們在此設計讓帳密以一個逗點分隔。
所以 Case "0"部分的程式碼應該變成這樣:

1.先設定 pass變數為未通過(False)
2.逐一用迴圈檢查帳密是否符合資料之一
3.通過者按正常上線程序處理
4.未通過者回傳一個"XX"訊息,表示命令碼"X",內容也是"X"

客戶端程式的修改
表單修改

伺服端現在要同時檢查帳號與密碼了,所以客戶端也要能輸入帳號加密碼:

必須加一個輸入密碼的欄位(應該是TextBox6),而且它的 PasswordChar屬性應設定為"*"字元,使用者打密碼時就會顯示"*"字元,比較不容易被旁邊的人偷窺。

送出連線要求的程式Button1_Click
事實上只是加上一個逗點及密碼(TextBox6.Text)而已!

但是現在不是一定可以登入了,有可能被拒絕!所原先在此的三行確定登入後才應該執行的程式碼:
TextBox4.Text = "已連線伺服器!" & vbCrLf
Button1.Enabled = False
Button2.Enabled = True 
必須移到確定登入成功時再執行,因此監聽回訊部分應該增加收到拒絕訊息以及確認登入時的程式碼如下:

收到允許或拒絕連線的回應

1.上面的一個紅框框是收到自己已上線訊息時執行幾行程式設定程式物件上線應有的狀態。
2.下面紅框框是收到拒絕訊息"XX"時的反應,就是顯示錯誤並關閉連線物件T與執行緒Th。

測試執行看看,亂打帳密應該會出現錯誤訊息,正確時則與之前的成功登入情況一樣!