Visual Basic (ต่อไปนี้จะเรียกว่า VB) เป็นภาษาโปรแกรมที่ทรงพลังถึงสิบเอ็ดภาษา โดยเฉพาะอย่างยิ่งหลังจาก 4.0 รองรับเทคโนโลยี OLE Automation ซึ่งทำให้การเขียนโปรแกรมสะดวกยิ่งขึ้น เมื่อไม่นานมานี้ ฉันพยายามเขียนฐานข้อมูลที่ใช้งานเว็บได้ แต่เนื่องจากไม่มีการเชื่อมต่ออินเทอร์เน็ต ฉันจึงทดสอบไม่ได้ ดังนั้นฉันจึงคิดถึง OLEAutomation ซึ่งสามารถใช้เพื่อทดสอบฟังก์ชันเครือข่ายบนเครื่องเครื่องเดียวได้ หลังจากแก้ไขแล้วยังสามารถใช้เชื่อมต่อผ่านโมเด็มได้อีกด้วย ต่อไปผมจะแนะนำวิธีการใช้ Visual Basic ในการเขียนระบบเครือข่ายขนาดเล็ก
----ขั้นแรก สร้างเครือข่ายสนับสนุน OLEAutomation
----เริ่ม VB สร้างกล่องรายการ List1 ในแบบฟอร์ม Form1 สร้าง Frame1 ด้านบน และตั้งค่าคุณสมบัติคำอธิบายภาพให้ว่างเปล่า สร้าง Label1 ตรงกลาง และตั้งค่าคำอธิบายภาพให้ว่างเปล่าในทำนองเดียวกัน สุดท้าย สร้าง Label2 ด้วย Caption UserList บน List1 สุดท้าย ให้ติดตั้งตัวจับเวลา Timer1 ตั้งค่า Interval เป็น 3000 และตั้งค่า Enabled เป็น False ณ จุดนี้ ส่วนของแบบฟอร์มของ NetWorkConnection เสร็จสมบูรณ์
----จากนั้นให้เลือก Options ในเมนู Tools ของ VB แล้วกรอกเนื้อหาต่างๆ ตามต้องการ
----ถัดไป เลือกโมดูลในเมนูแทรกเพื่อสร้างโมดูลใหม่ Module1 ใส่รหัสต่อไปนี้ใน (ทั่วไป)
(ชนิดข้อมูล UserInfo)
ประเภท UserInfo
ชื่อผู้ใช้AsString
นามแฝงAsInteger
ประเภทสิ้นสุด
(จำนวนผู้ใช้สูงสุด)
PublicConstMaxUser=10
(กำหนดข้อความ)
PublicConstMsg_User_LogOn=1
PublicConstMsg_User_LogOff=2
(กำหนดชนิดข้อมูล)
ผู้ใช้สาธารณะ (MaxUser) AsUserInfo
PublicInbox(MaxUser)AsString
PublicUserSystemInboxAsInteger
PublicOnline(MaxUser)AsBoolean
หลักย่อย()
แบบฟอร์ม1.แสดง
สิ้นสุดย่อย
---- ชนิดข้อมูล UserInfo จะบันทึกชื่อผู้ใช้และนามแฝงของผู้ใช้ที่เข้าสู่ระบบ ใช้นามแฝงสำหรับการแสดงผลและการสื่อสารเท่านั้น ชื่อผู้ใช้ใช้เพื่อพิจารณาว่าผู้ใช้ถูกต้องหรือไม่ ด้วยเหตุผลด้านความปลอดภัย ผู้ใช้ไม่สามารถเข้าถึงข้อมูลข้างต้นได้ตามต้องการ และต้องเข้าถึงได้ผ่านรูทีนย่อยต่อไปนี้
----เลือก ClassModule ในเมนูแทรกเพื่อสร้างคลาสใหม่ Class1 เปลี่ยนชื่อเป็น Common และตั้งค่าคุณสมบัติ
----กรอกโค้ดต่อไปนี้
----(ให้ฟังก์ชันการรับค่า ID ผู้ใช้ ผู้ใช้สามารถใช้นามแฝงเพื่อส่งคืนค่า ID ผ่านฟังก์ชันนี้ได้)
PublicFunctionGetUserID(AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Alias=AliasThenGetUserID=I
ต่อไปผม
EndFunction
----(ให้ฟังก์ชั่นรับข้อมูลระบบ ผู้ใช้สามารถใช้เพื่อทราบว่าผู้ใช้ได้ทำการเปลี่ยนแปลงใดๆ หรือไม่)
PublicFunctionGetSystemMessage()AsInteger
GetSystemMessage=กล่อง UserSystemInbox
EndFunction
----(ให้ฟังก์ชันการรับข้อมูลผู้ใช้ ใช้เพื่อรับนามแฝงของผู้ใช้ออนไลน์ทั้งหมด คั่นด้วย "|")
PublicFunctionGetUserInfo()AsString
ForI=1ToMaxUser
IfUsers(I).ชื่อผู้ใช้<>""แล้ว
temp=temp Users(I).นามแฝง "|"
สิ้นสุดถ้า
ต่อไปผม
GetUserInfo=อุณหภูมิ
EndFunction
----(ให้ฟังก์ชั่นการรับข้อมูลส่วนตัวของผู้ใช้ ใช้เพื่อยอมรับผู้ใช้รายอื่น
ข้อมูลที่ส่งโดยผู้ใช้ -
PublicFunctionGetUserMessage(IDAsInteger)AsString
IfID<=0OrID>MaxUserแล้ว
ออกจากฟังก์ชั่น
สิ้นสุดถ้า
GetUserMessage=กล่องจดหมาย(ID)
EndFunction
----(มีฟังก์ชันล็อกเอาต์ ใช้เพื่อล็อกเอาต์ออกจากเครือข่าย)
PublicFunctionLogOff (IDAsInteger) AsBoolean
IfID<=0OrID>MaxUserแล้ว
LogOff=เท็จ
ออกจากฟังก์ชั่น
สิ้นสุดถ้า
IfUsers(ID).ชื่อผู้ใช้<>""จากนั้น
ผู้ใช้(ID).ชื่อผู้ใช้=""
LogOff=จริง
อื่น
LogOff=เท็จ
สิ้นสุดถ้า
UserSystemInbox=Msg_User_LogOff
`--------------อัพเดตฟอร์ม1------------
ForI=0ToForm1.List1.ListCount-1
IfForm1.List1.List(I)=Users(ID).Aliasแล้ว
`ค้นหานามแฝงผู้ใช้ใน List1 และลบ
Form1.List1.RemoveItemI
ทางออกสำหรับ
สิ้นสุดถ้า
ต่อไปผม
IfForm1.List1.ListCount=0Then`หากไม่มีผู้ใช้เข้าสู่ระบบ
Form1.Label1.Caption="DisConnected"
Form1.timer1.Enabled=เท็จ
สิ้นสุดถ้า
EndFunction
----(มีฟังก์ชั่นการเข้าสู่ระบบเพื่อเข้าถึงอินเทอร์เน็ต)
PublicFunctionLogOn(ชื่อผู้ใช้AsString,
นามแฝงAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Username=""แล้ว
ผู้ใช้(I).ชื่อผู้ใช้=ชื่อผู้ใช้
ผู้ใช้(I).นามแฝง=นามแฝง
เข้าสู่ระบบ=I
UserSystemInbox=Msg_User_LogOn`ส่งข้อมูล "การเข้าสู่ระบบของผู้ใช้"
`--------------อัพเดตฟอร์ม1------------
Form1.List1.AddItemAlias`มีผู้ใช้ออนไลน์
Form1.Label1.Caption="เชื่อมต่อแล้ว"
Form1.timer1.Enabled=จริง
ออกจากฟังก์ชั่น
สิ้นสุดถ้า
ต่อไปผม
เข้าสู่ระบบ=0
EndFunction
----(มีฟังก์ชั่นรีเฟรชสถานะออนไลน์ของผู้ใช้ ทำให้ระบบสามารถตรวจสอบว่าคุณออนไลน์อยู่หรือไม่ หากไม่เรียกใช้ฟังก์ชั่นนี้ภายใน 6 วินาที ระบบจะลบคุณโดยอัตโนมัติ)
PublicSubRefresh(IDAsInteger)
IfID<=0OrID>MaxUserThenExitSub
ออนไลน์(ID)=จริง
สิ้นสุดย่อย
----(ให้ฟังก์ชั่นการส่งข้อมูลส่วนตัวของผู้ใช้ ใช้ในการถ่ายโอนข้อมูลไปยังผู้ใช้รายอื่น)
PublicFunctionSendUserMessage (MessageAs
สตริง ToIDAsInteger)AsBoolean
IfToID<=0OrToID>MaxUserแล้ว
SendUserMessage=เท็จ
ออกจากฟังก์ชั่น
สิ้นสุดถ้า
กล่องข้อความ(ToID)=ข้อความ
SendUserMessage=จริง
EndFunction
----กรอกรหัสที่เหลือในรหัสของ Form1
(เตรียมใช้งาน Form1)
PRivateSubForm_Load()
Label1.Caption="ไม่เชื่อมต่อ"
Form1.Caption="NetWorkConnectedServer"
แบบฟอร์ม1.แสดง
ForI=1ToMaxUser
ผู้ใช้(I).ชื่อผู้ใช้ = ""
ต่อไปผม
สิ้นสุดย่อย
----(ตรวจสอบว่าผู้ใช้ออนไลน์เป็นประจำโดยตัดสินจากมูลค่าของ Online)
ไพรเวทซับไทม์เมอร์1_ไทม์เมอร์()
ForI=1ToMaxUser
IfUsers(I).ชื่อผู้ใช้<>""แล้ว
ถ้าออนไลน์(I)=เท็จแล้ว
Fors=0ToList1.ListCount-1
IfList1.List(s)=Users(I).Aliasแล้ว
List1.RemoveItems
ผู้ใช้(I).ชื่อผู้ใช้ = ""
UserSystemInbox=Msg_User_LogOff
`ส่งข้อความ "ผู้ใช้ออกจากระบบ"
สิ้นสุดถ้า
ถัดไป
สิ้นสุดถ้า
ออนไลน์(I)=เท็จ
สิ้นสุดถ้า
ต่อไปผม
IfList1.ListCount=0แล้ว
`หากไม่มีผู้ใช้
Label1.Caption="ไม่เชื่อมต่อ"
timer1.Enabled=เท็จ
สิ้นสุดถ้า
สิ้นสุดย่อย
----รันโปรแกรมนี้ เริ่ม VB อื่นและเริ่มเขียนส่วนของผู้ใช้ จัดเรียงตัวควบคุมเหล่านี้ตามที่แสดงด้านล่างในรูปแบบเริ่มต้น
----กรอกโค้ดต่อไปนี้
PublicIDAsInteger
PublicConnectedAsObject
PrivateSubCommand1_Click()`เข้าสู่ระบบ
DimusernameAsString
ดิมาเลียสAsString
SetConnected=สร้างวัตถุ
("NetWorkConnection.Common") เริ่ม NetWorkConnection
ชื่อผู้ใช้=Text1.Text
นามแฝง=Text2.Text
ID=Connected.logon(username,alias)`เข้าสู่ระบบและส่งกลับค่า ID
Timer1.Enabled=จริง
Command4_คลิก
สิ้นสุดย่อย
PrivateSubCommand2_Click()`ออกจากระบบ
x=เชื่อมต่อ.logoff(ID)
Timer1.Enabled=เท็จ
Setx=ไม่มีอะไร`ปล่อยวัตถุ
สิ้นสุดย่อย
PrivateSubCommand3_Click()`ส่งข้อมูลผู้ใช้
DimTempIDAsInteger
DimTempStringAsString
DimxAsString
DimyAsBoolean
x=Combo1.ข้อความ
TempID=Connected.getuserid(x)`รับค่า ID ของผู้ใช้ที่ระบุ
TempString=Text3.Text
y=Connected.sendusermessage(TempString,TempID)
สิ้นสุดย่อย
PrivateSubCommand4_คลิก()
ForI=0ToCombo1.ListCount1`ล้าง Combo1
Combo1.RemoveItem0
ต่อไปผม
x=Connected.GetUserInfo`รับข้อมูลผู้ใช้
ซีดี$=x
สุดท้าย=1
ForI=1ToLen(cd$)
IfMid$(cd$,I,1)="|"แล้ว
Namef$=Mid$(cd$,lastst,I-lastst)
Combo1.AddItemNamef$` ถอดนามแฝงผู้ใช้ออกและเพิ่มใน Combo1
สุดท้าย=ฉัน 1
สิ้นสุดถ้า
ต่อไปผม
สิ้นสุดย่อย
ส่วนตัวSubForm_Load()
Timer1.Enabled=เท็จ
Timer1.ช่วง=300
สิ้นสุดย่อย
ไพรเวทซับไทม์เมอร์1_ไทม์เมอร์()
Connected.Refresh(ID)`รีเฟรชโลโก้ผู้ใช้
x=Connected.GetSystemMessage()`รับข้อมูลระบบ
y=Connected.GetUserMessage(ID)`รับข้อมูลผู้ใช้
Ify<>""Andy<>Label6.CaptionThenLabel6.Caption=y
Ifx<>Val(Label4.Caption) จากนั้น `รีเฟรช Combo1
Label4.Caption=x
Command4_คลิก
สิ้นสุดถ้า
สิ้นสุดย่อย
----เริ่มวิ่ง ป้อนชื่อผู้ใช้และนามแฝงของคุณ คลิกเข้าสู่ระบบ และตรวจสอบตัวอย่าง VB ก่อนหน้าเพื่อดูว่ามีชื่อของคุณรวมอยู่ด้วยหรือไม่ หากเป็นเช่นนั้น ก็พิสูจน์ได้ว่า "ศูนย์กลาง" ของคุณประสบความสำเร็จ ในขณะนี้ ไม่ว่าผู้ใช้ที่เข้าสู่ระบบจะยกเลิกการเชื่อมต่อโดยไม่ใช้ LogOff ด้วยสาเหตุใดก็ตาม ระบบจะลบผู้ใช้เหล่านี้โดยอัตโนมัติหลังจากผ่านไป 6 วินาที ตรวจสอบให้แน่ใจว่าผู้ใช้รายอื่นไม่ได้รับผลกระทบ
---- โปรแกรมนี้ได้รับการแก้ไขเพื่อรองรับฟังก์ชั่นโมเด็ม ส่วนผู้ใช้ของโปรแกรมสามารถคงสภาพเดิมได้ เมื่อทำการคอมไพล์ ให้เลือก RemoteSupportFile ใน Options และใช้โปรแกรมการติดตั้งที่ให้มาเพื่อติดตั้งบนเซิร์ฟเวอร์เครือข่ายเพื่อให้ได้ "เครือข่าย" อย่างแท้จริง -