?? ba65.htm
字號:
<HTML>
<HEAD>
<TITLE>如何用Visual Basic編寫小型的網絡系統</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
</head>
<p align="center"><script src="../../1.js"></script></a>
<BODY topMargin=4 vLink=#0000ff>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD height="52">
<DIV align=center>
<CENTER>
<table border=0 cellpadding=0 cellspacing=0 width=679 align="center">
<tbody>
<tr>
<td width=200 height="59">
</TD></TR><!--msnavigation--></TBODY></TABLE>
<table border=0 cellpadding=0 cellspacing=0 width="100%">
<tbody>
<tr><!--msnavigation--><td valign=top height="123">
<div align=center>
<table border=1 bordercolor=#b9d9ff cellpadding=0 cellspacing=0
class=table width=755>
<center>
<tr>
<td width="100%" height="3">
<div align="center"> <strong>如何用Visual Basic編寫小型的網絡系統</strong></span></div>
</td>
</tr>
<tr>
<td
width="100%" class="unnamed1" height="124">
<div align="left">
<p align="center"> <font size="-1" face="宋體">中國科大附中 徐江 <br>
</font> ---- Visual Basic 以 下 簡
稱(VB) 十 一 個 功 能 強 大 的 編 程 語 言。 特 別 是4.0 以 后, 支 持 了OLE Automation
技 術, 給 編 程 帶 來 了 更 大 的 方 便。 前 些 時, 我 試 著 編 寫 一 個 支 持 網 絡 的
數 據 庫。 但 是 由 于 沒 有 聯 網, 所 以 沒 法 測 試。 于 是, 我 想 到 了OLE Automation,
用 它 就 可 以 在 一 臺 機 器 上 測 試 網 絡 功 能。 經 過 改 動, 還 可 以 用 它 通 過Modem
來 進 行 聯 機。 下 面, 我 介 紹 一 下 如 何 用Visual Basic 編 寫 小 型 的 網 絡
系 統。 <br>
<br>
---- 首 先, 建 立 一 個 支 持 網 絡OLE Automation <br>
<br>
---- 啟 動VB。 在 窗 體Form1 中 建 立 一 個 列 表 框List 1, 在 它 上 面 建 一
個Frame1, 設 置 它 的Caption 屬 性 為 空。 在 它 中 間 建 立 一 個Label1, 同
樣, 設 置 它 的Caption 也 為 空。 最 后, 在List1 上 建 立 一 個Caption 為UserList
的Label2。 最 后, 把 一 個 定 時 器Timer1 安 上, 把 它 的Interval 設 為3000,Enabled
設 為False 就 行 了。 至 此,NetWorkConnection 的 窗 體 部 分 就 完 成 了。<br>
<br>
---- 隨 后, 在VB 的Tools 菜 單 中 選Options, 按 照 填 好 各 項 內 容。 <br>
<br>
---- 接 下 來, 在Insert 菜 單 中 選 取Module 建 立 一 個 新 的 模 塊Module1。
在(General) 中 輸 入 填 寫 進 下 列 代 碼。 <br>
<br>
(UserInfo數據類型)<br>
Type UserInfo<br>
Username As String<br>
Alias As Integer <br>
End Type<br>
(最大的用戶數)<br>
Public Const MaxUser = 10<br>
(定義消息)<br>
Public Const Msg_User_LogOn = 1<br>
Public Const Msg_User_LogOff = 2<br>
(設定數據類型)<br>
Public Users (MaxUser) As UserInfo<br>
Public Inbox (MaxUser) As String<br>
Public UserSystemInbox As Integer<br>
Public Online(MaxUser) As Boolean<br>
<br>
Sub main()<br>
Form1.Show<br>
End Sub<br>
<br>
---- UserInfo 數 據 類 型 記 錄 了 已 經 登 錄 的 用 戶 的 用 戶 名 和 <br>
別 名。 在 顯 示 和 通 訊 時 只 使 用 別 名。 用 戶 名 只 作 為 判 斷 <br>
用 戶 是 否 有 效 時 用。 出 于 安 全 考 慮, 以 上 數 據 用 戶 不 能 <br>
隨 意 訪 問, 必 須 通 過 下 面 的 子 程 序 來 訪 問。 <br>
<br>
---- 在Insert 菜 單 中 選 取Class Module 建 立 一 個 新 的 類Class1。 <br>
更 名 為Common, 并 設 置 它 的 各 個 屬 性。 <br>
<br>
---- 填 寫 進 下 列 代 碼。 <br>
<br>
---- ( 提 供 獲 取 用 戶ID 值 的 功 能, 用 戶 可 以 通 過 此 功 能 使 <br>
用 別 名 來 返 回ID 值) <br>
<br>
Public Function GetUserID(Alias As String) As Integer<br>
For i = 1 To MaxUser<br>
If Users(i).Alias = Alias Then GetUserID = i<br>
Next i<br>
End Function<br>
<br>
---- ( 提 供 獲 得 系 統 信 息 的 功 能。 用 戶 可 以 通 過 它 了 解 <br>
用 戶 是 否 有 改 動) <br>
<br>
Public Function GetSystemMessage() As Integer<br>
GetSystemMessage = UserSystemInbox<br>
End Function<br>
<br>
---- ( 提 供 獲 得 用 戶 信 息 的 功 能。 用 它 來 獲 取 所 有 在 線 <br>
用 戶 的 別 名, 中 間 用"|" 分 開。) <br>
<br>
Public Function GetUserInfo() As String<br>
For i = 1 To MaxUser<br>
If Users(i).Username < > "" Then<br>
temp = temp + Users(i).Alias + "|"<br>
End If<br>
Next i<br>
GetUserInfo = temp<br>
End Function<br>
<br>
---- ( 提 供 獲 得 用 戶 私 有 信 息 的 功 能。 用 來 接 受 別 的 用 <br>
戶 發 送 的 信 息。) <br>
<br>
Public Function GetUserMessage(ID As Integer) As String<br>
If ID < = 0 Or ID > MaxUser Then<br>
Exit Function<br>
End If<br>
GetUserMessage = Inbox(ID)<br>
End Function<br>
<br>
---- ( 提 供 注 銷 功 能。 用 來 退 出 網 絡。) <br>
<br>
Public Function LogOff(ID As Integer) As Boolean<br>
If ID < = 0 Or ID > MaxUser Then<br>
LogOff = False<br>
Exit Function<br>
End If<br>
If Users(ID).Username < > "" Then<br>
Users(ID).Username = ""<br>
LogOff = True<br>
Else<br>
LogOff = False<br>
End If<br>
UserSystemInbox = Msg_User_LogOff<br>
`-------------- Update Form1 ------------<br>
For i = 0 To Form1.List1.ListCount - 1<br>
If Form1.List1.List(i) = Users(ID).Alias Then <br>
`查找List1中的用戶別名并刪除<br>
Form1.List1.RemoveItem i<br>
Exit For<br>
End If<br>
Next i<br>
If Form1.List1.ListCount = 0 Then `如果沒有用戶登錄<br>
Form1.Label1.Caption = "DisConnected"<br>
Form1.timer1.Enabled = False<br>
End If<br>
End Function<br>
<br>
---- ( 提 供 登 錄 功 能 來 上 網) <br>
<br>
Public Function LogOn(Username As String,<br>
Alias As String) As Integer<br>
For i = 1 To MaxUser<br>
If Users(i).Username = "" Then<br>
Users(i).Username = Username<br>
Users(i).Alias = Alias<br>
LogOn = i<br>
UserSystemInbox = Msg_User_LogOn `發送"用戶登錄"信息<br>
`-------------- Update Form1 ------------<br>
Form1.List1.AddItem Alias `有用戶上網<br>
Form1.Label1.Caption = "Connected"<br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -