首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> VB -> 如何用VisualBasic编写小型的网络系统
如何用VisualBasic编写小型的网络系统


文章类别:VB 来源: 作者: 发表日期:2006-2-28 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

VisualBasic以下简称(VB)十一个功能强大的编程语言。特别是4.0以后,支持了OLEAutomation技术,给编程带来了更大的方便。前些时,我试着编写一个支持网络的数据库。但是由于没有联网,所以没法测试。于是,我想到了OLEAutomation,用它就可以在一台机器上测试网络功能。经过改动,还可以用它通过Modem来进行联机。下面,我介绍一下如何用VisualBasic编写小型的网络系统。

----首先,建立一个支持网络OLEAutomation

----启动VB。在窗体Form1中建立一个列表框List1,在它上面建一个Frame1,设置它的Caption属性为空。在它中间建立一个Label1,同样,设置它的Caption也为空。最后,在List1上建立一个Caption为UserList的Label2。最后,把一个定时器Timer1安上,把它的Interval设为3000,Enabled设为False就行了。至此,NetWorkConnection的窗体部分就完成了。

----随后,在VB的Tools菜单中选Options,按照填好各项内容。

----接下来,在Insert菜单中选取Module建立一个新的模块Module1。在(General)中输入填写进下列代码。

(UserInfo数据类型)
TypeUserInfo
UsernameAsString
AliasAsInteger
EndType
(最大的用户数)
PublicConstMaxUser=10
(定义消息)
PublicConstMsg_User_LogOn=1
PublicConstMsg_User_LogOff=2
(设定数据类型)
PublicUsers(MaxUser)AsUserInfo
PublicInbox(MaxUser)AsString
PublicUserSystemInboxAsInteger
PublicOnline(MaxUser)AsBoolean

Submain()
Form1.Show
EndSub

----UserInfo数据类型记录了已经登录的用户的用户名和别名。在显示和通讯时只使用别名。用户名只作为判断用户是否有效时用。出于安全考虑,以上数据用户不能随意访问,必须通过下面的子程序来访问。

----在Insert菜单中选取ClassModule建立一个新的类Class1。更名为Common,并设置它的各个属性。

----填写进下列代码。

----(提供获取用户ID值的功能,用户可以通过此功能使用别名来返回ID值)

PublicFunctionGetUserID(AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Alias=AliasThenGetUserID=I
NextI
EndFunction

----(提供获得系统信息的功能。用户可以通过它了解用户是否有改动)

PublicFunctionGetSystemMessage()AsInteger
GetSystemMessage=UserSystemInbox
EndFunction

----(提供获得用户信息的功能。用它来获取所有在线用户的别名,中间用"|"分开。)

PublicFunctionGetUserInfo()AsString
ForI=1ToMaxUser
IfUsers(I).Username<>""Then
temp=temp Users(I).Alias "|"
EndIf
NextI
GetUserInfo=temp
EndFunction

----(提供获得用户私有信息的功能。用来接受别的用
户发送的信息。)

PublicFunctionGetUserMessage(IDAsInteger)AsString
IfID<=0OrID>MaxUserThen
ExitFunction
EndIf
GetUserMessage=Inbox(ID)
EndFunction

----(提供注销功能。用来退出网络。)

PublicFunctionLogOff(IDAsInteger)AsBoolean
IfID<=0OrID>MaxUserThen
LogOff=False
ExitFunction
EndIf
IfUsers(ID).Username<>""Then
Users(ID).Username=""
LogOff=True
Else
LogOff=False
EndIf
UserSystemInbox=Msg_User_LogOff
`--------------UpdateForm1------------
ForI=0ToForm1.List1.ListCount-1
IfForm1.List1.List(I)=Users(ID).AliasThen
`查找List1中的用户别名并删除
Form1.List1.RemoveItemI
ExitFor
EndIf
NextI
IfForm1.List1.ListCount=0Then`如果没有用户登录
Form1.Label1.Caption="DisConnected"
Form1.timer1.Enabled=False
EndIf
EndFunction

----(提供登录功能来上网)

PublicFunctionLogOn(UsernameAsString,
AliasAsString)AsInteger
ForI=1ToMaxUser
IfUsers(I).Username=""Then
Users(I).Username=Username
Users(I).Alias=Alias
LogOn=I
UserSystemInbox=Msg_User_LogOn`发送"用户登录"信息
`--------------UpdateForm1------------
Form1.List1.AddItemAlias`有用户上网
Form1.Label1.Caption="Connected"
Form1.timer1.Enabled=True
ExitFunction
EndIf
NextI
LogOn=0
EndFunction

----(提供刷新用户是否在线标志的功能。使系统能够判断你是否在线上,如果在6秒内没有调用此功能,系统将会把您自动删除。)

PublicSubRefresh(IDAsInteger)
IfID<=0OrID>MaxUserThenExitSub
Online(ID)=True
EndSub

----(提供发送用户私有信息的功能。用来和其它用户传递信息。)

PublicFunctionSendUserMessage(MessageAs
String,ToIDAsInteger)AsBoolean
IfToID<=0OrToID>MaxUserThen
SendUserMessage=False
ExitFunction
EndIf
Inbox(ToID)=Message
SendUserMessage=True
EndFunction

----在Form1的Code中输入剩下的代码。

(初始化Form1)
PrivateSubForm_Load()
Label1.Caption="DisConnected"
Form1.Caption="NetWorkConnectedServer"
Form1.Show
ForI=1ToMaxUser
Users(I).Username=""
NextI
EndSub

----(通过判断Online的值定时检查用户是否在线)

PrivateSubtimer1_Timer()
ForI=1ToMaxUser
IfUsers(I).Username<>""Then
IfOnline(I)=FalseThen
Fors=0ToList1.ListCount-1
IfList1.List(s)=Users(I).AliasThen
List1.RemoveItems
Users(I).Username=""
UserSystemInbox=Msg_User_LogOff
`发送"用户注销"信息
EndIf
Nexts
EndIf
Online(I)=False
EndIf
NextI
IfList1.ListCount=0Then
`如果没有用户
Label1.Caption="DisConnected"
timer1.Enabled=False
EndIf
EndSub

----运行此程序。在启动另一个VB,开始编写用户部分。在默认窗体中按下图排好这些控件。

----填入下列代码

PublicIDAsInteger
PublicConnectedAsObject
PrivateSubCommand1_Click()`登录
DimusernameAsString
DimaliasAsString
SetConnected=CreateObject
("NetWorkConnection.Common")启动NetWorkConnection
username=Text1.Text
alias=Text2.Text
ID=Connected.logon(username,alias)`登录并返回ID值
Timer1.Enabled=True
Command4_Click
EndSub

PrivateSubCommand2_Click()`注销
x=Connected.logoff(ID)
Timer1.Enabled=False
Setx=Nothing`释放对象
EndSub

PrivateSubCommand3_Click()`发送用户信息
DimTempIDAsInteger
DimTempStringAsString
DimxAsString
DimyAsBoolean
x=Combo1.Text
TempID=Connected.getuserid(x)`获得指定用户的ID值
TempString=Text3.Text
y=Connected.sendusermessage(TempString,TempID)
EndSub

PrivateSubCommand4_Click()
ForI=0ToCombo1.ListCount1`清空Combo1
Combo1.RemoveItem0
NextI

x=Connected.GetUserInfo`接收用户信息
cd$=x
lastst=1
ForI=1ToLen(cd$)
IfMid$(cd$,I,1)="|"Then
Namef$=Mid$(cd$,lastst,I-lastst)
Combo1.AddItemNamef$`分离用户别名并加入Combo1
lastst=I 1
EndIf
NextI

EndSub

PrivateSubForm_Load()
Timer1.Enabled=False
Timer1.Interval=300
EndSub

PrivateSubTimer1_Timer()
Connected.Refresh(ID)`刷新用户标志
x=Connected.GetSystemMessage()`接收系统信息
y=Connected.GetUserMessage(ID)`接收用户信息
Ify<>""Andy<>Label6.CaptionThenLabel6.Caption=y
Ifx<>Val(Label4.Caption)Then`刷新Combo1
Label4.Caption=x
Command4_Click
EndIf
EndSub

----开始运行。输入你的Username和Alias,单击LogOn,查看一下先前的VB范例,看看你的名字是否在内。如果是,证明你的"集线器"成功了。这时,不管已登录的用户处于什么原因没有用LogOff就中断联系,系统都会在6秒后自动删除这些用户。确保其它用户不受影响。

----这个程序经过改动,可以给它支持Modem的功能。而用户部分的程序可以原封不动。编译时在Options中选中RemoteSupportFile并利用附带的安装程序安装到网络服务器上就可以真正实现"联网"了。->

上一篇:如何去优化你的VB程序 下一篇:用VB6编写强力的windows隐藏引擎
本栏目热门文章
·用VB实现象Windows记事本的一些功能 2006-2-28
·DataGrid控件的使用 2006-2-28
·DataCombo和DataList控件的使用二 2006-2-28
·DataGrid控件的使用二 2006-2-28
·利用timeGetTime函数更精准地计算差 2006-2-28
·自己的IE——用VB制作浏览器 2006-2-28
·利用VBScript实现倒计时 2006-2-28
·用Winsock制作一套聊天室和对话系统 2006-2-28
·使用ADO來压缩或修复MicrosoftAccess文件 2006-2-28
·用VB尝试新的界面风格 2006-2-28
新近更新文章
·用VB实现象Windows记事本的一些功能 2006-2-28
·FLIC动画文件的播放程序设计 2006-2-28
·用VB实现浮动按钮 2006-2-28
·利用VB三维面板控件设计流动条 2006-2-28
·用VB制作即时动态按钮 2006-2-28
·用VB尝试新的界面风格 2006-2-28
·VB5.0中实现字体闪烁效果 2006-2-28
·VB5.0应用程序的启动与退出设计 2006-2-28
·用VB5.0创建Windows快捷方式 2006-2-28
·在VB中如何创建闪烁(标语)屏 2006-2-28
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: