说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何用Visual Basic编写小型的网络系统

HTML文档下载 WORD文档下载 PDF文档下载
VB如何用Visual Basic编写小型的网络系统


中国科大附中 徐 江

Visual Basic 以下简称(VB) 十一个功能强大的编程语言。特别是4.0 以后,支持了OLE Automation 技术,给编程带来了更大的方便。前些时,我试着编写一个支持网络的数据库。但是由于没有联网,所以没法测试。于是,我想到了OLE Automation,用它就可以在一台机器上测试网络功能。经过改动,还可以用它通过Modem 来进行联机。下面,我介绍一下如何用Visual Basic 编写小型的网络系统。
首先,建立一个支持网络OLE Automation
启动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数据类型)
Type UserInfo
Username As String
Alias As Integer
End Type
'(最大的用户数)
Public Const MaxUser = 10
'(定义消息)
Public Const Msg_User_LogOn = 1
Public Const Msg_User_LogOff = 2
'(设定数据类型)
Public Users (MaxUser) As UserInfo
Public Inbox (MaxUser) As String
Public UserSystemInbox As Integer
Public Online(MaxUser) As Boolean

Sub main()
Form1.Show
End Sub

UserInfo 数据类型记录了已经登录的用户的用户名和别名。在显示和通讯时只使用别名。用户名只作为判断用户是否有效时用。出于安全考虑,以上数据用户不能随意访问,必须通过下面的子程序来访问。
在Insert菜单中选取Class Module 建立一个新的类Class1。更名为Common,并设置它的各个属性。
填写进下列代码。
(提供获取用户ID 值的功能,用户可以通过此功能使用别名来返回ID值)

Public Function GetUserID(Alias As String) As Integer
For i = 1 To MaxUser
If Users(i).Alias = Alias Then GetUserID = i
Next i
End Function

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

Public Function GetSystemMessage() As Integer
GetSystemMessage = UserSystemInbox
End Function

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

Public Function GetUserInfo() As String
For i = 1 To MaxUser
If Users(i).Username < > "" Then
temp = temp + Users(i).Alias + "|"
End If
Next i
GetUserInfo = temp
End Function

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

Public Function GetUserMessage(ID As Integer) As String
If ID < = 0 Or ID > MaxUser Then
Exit Function
End If
GetUserMessage = Inbox(ID)
End Function

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

Public Function LogOff(ID As Integer) As Boolean
If ID < = 0 Or ID > MaxUser Then
LogOff = False
Exit Function
End If
If Users(ID).Username < > "" Then
Users(ID).Username = ""
LogOff = True
Else
LogOff = False
End If
UserSystemInbox = Msg_User_LogOff
'-------------- Update Form1 ------------
For i = 0 To Form1.List1.ListCount - 1
If Form1.List1.List(i) = Users(ID).Alias Then
'查找List1中的用户别名并删除
Form1.List1.RemoveItem i
Exit For
End If
Next i
If Form1.List1.ListCount = 0 Then '如果没有用户登录
Form1.Label1.Caption = "DisConnected"
Form1.timer1.Enabled = False
End If
End Function

(提供登录功能来上网)

Public Function LogOn(Username As String, Alias As String) As Integer
For i = 1 To MaxUser
If Users(i).Username = "" Then
Users(i).Username = Username
Users(i).Alias = Alias
LogOn = i
UserSystemInbox = Msg_User_LogOn '发送"用户登录"信息
'-------------- Update Form1 ------------
Form1.List1.AddItem Alias '有用户上网
Form1.Label1.Caption = "Connected"
Form1.timer1.Enabled = True
Exit Function
End If
Next i
LogOn = 0
End Function

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

Public Sub Refresh(ID As Integer)
If ID < = 0 Or ID > MaxUser Then Exit Sub
Online(ID) = True
End Sub

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

Public Function SendUserMessage(Message As String, ToID As Integer) As Boolean
If ToID < = 0 Or ToID > MaxUser Then
SendUserMessage = False
Exit Function
End If
Inbox(ToID) = Message
SendUserMessage = True
End Function

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

'(初始化Form1)
Private Sub Form_Load()
Label1.Caption = "DisConnected"
Form1.Caption = "NetWork Connected Server"
Form1.Show
For i = 1 To MaxUser
Users(i).Username = ""
Next i
End Sub

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

Private Sub timer1_Timer()
For i = 1 To MaxUser
If Users(i).Username < > "" Then
If Online(i) = False Then
For s = 0 To List1.ListCount - 1
If List1.List(s) = Users(i).Alias Then
List1.RemoveItem s
Users(i).Username = ""
UserSystemInbox = Msg_User_LogOff
'发送"用户注销"信息
End If
Next s
End If
Online(i) = False
End If
Next i
If List1.ListCount = 0 Then
'如果没有用户
Label1.Caption = "DisConnected"
timer1.Enabled = False
End If
End Sub

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

填入下列代码

Public ID As Integer
Public Connected As Object
Private Sub Command1_Click() '登录
Dim username As String
Dim alias As String
Set Connected = CreateObject("NetWorkConnection.Common") '启动NetWorkConnection
username = Text1.Text
alias = Text2.Text
ID = Connected.logon(username, alias) '登录并返回ID值
Timer1.Enabled = True
Command4_Click
End Sub

Private Sub Command2_Click() '注销
x = Connected.logoff(ID)
Timer1.Enabled = False
Set x = Nothing '释放对象
End Sub

Private Sub Command3_Click() '发送用户信息
Dim TempID As Integer
Dim TempString As String
Dim x As String
Dim y As Boolean
x = Combo1.Text
TempID = Connected.getuserid(x) '获得指定用户的ID值
TempString = Text3.Text
y = Connected.sendusermessage(TempString, TempID)
End Sub

Private Sub Command4_Click()
For i = 0 To Combo1.ListCount 1 '清空Combo1
Combo1.RemoveItem 0
Next i
x = Connected.GetUserInfo '接收用户信息
cd$ = x
lastst = 1
For i = 1 To Len(cd$)
If Mid$(cd$, i, 1) = "|" Then
Namef$ = Mid$(cd$, lastst, i - lastst)
Combo1.AddItem Namef$ '分离用户别名并加入Combo1
lastst = i + 1
End If
Next i
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 300
End Sub

Private Sub Timer1_Timer()
Connected.Refresh (ID) '刷新用户标志
x = Connected.GetSystemMessage() '接收系统信息
y = Connected.GetUserMessage(ID) '接收用户信息
If y < > "" And y < > Label6.Caption Then Label6.Caption = y
If x < > Val(Label4.Caption) Then '刷新Combo1
Label4.Caption = x
Command4_Click
End If
End Sub

开始运行。输入你的Username 和Alias,单击Log On,查看一下先前的VB 范例,看看你的名字是否在内。如果是,证明你的" 集线器" 成功了。这时,不管已登录的用户处于什么原因没有用LogOff 就中断联系,系统都会在6 秒后自动删除这些用户。确保其它用户不受影响。
这个程序经过改动,可以给它支持Modem 的功能。而用户部分的程序可以原封不动。编译时在Options 中选中Remote Support File 并利用附带的安装程序安装到网络服务器上就可以真正实现" 联网" 了。

2013年12月操作系统份额:Windows XP跌破30%大关 Linux小幅上涨 Snapchat存安全漏洞 460万用户信息被窃 年底广告高峰:AdMob团队支招“马上赚钱” 从远程调用框架认识Zookeeper 盘点Hadoop生态圈:13个让大象飞起来的开源工具 【开源推荐】Ejoy2D:“风魂”游戏引擎作者云风的又一力作 Web应用在IE11里的实际使用性能 回顾2013年十个值得关注的WordPress设计主题 为什么Google眼镜注定会失败? 2013移动开发工具盘点:最火原型设计工具 2013年12月份浏览器份额:IE 11暴涨3倍 【PPT集萃】十位一线专家分享Spark现状与未来(二) 2014年,怎么做产品才能获得成功? 年末新游盘点:2014年移动游戏四大趋势 IDC:全球有1850万程序猿 4成爱好者在写代码 PHP开发框架流行度排名:Laravel居首 2013年度最强AngularJS资源合集 研发周报:回顾2013、技术栈的选择、开源成趋势 TIOBE 2014年1月编程语言排行榜:Transact-SQL力挫Objective-C 夺得桂冠 IBM:这五个智能技术的发展,将会改变我们生活 一周消息树: 微软的2013,Surface的2014 Amazon CTO Werner Vogels:云和SaaS正在快速风靡全球 “人类先知”Isaac Asimov 50年前的科技预测大多应验了 2014年10大Web设计趋势 Google野心:App Indexing改写应用搜索格局 Cocos2d-x,老牌引擎的新进化 Kingdom Rush创始人专访:游戏与电影元素混搭 超实用的JavaScript技巧及最佳实践(下) 盖茨和鲍尔默或成挑选微软新CEO的最大阻碍 移动开发进阶:触发式邮件深入分析 King.com传奇再续!Farm Heroes Saga强势登陆iOS、Android DBEXPRESS的问题!很简单 请问那里有支持中文好的jsp开发的webmail下载?很急!谢谢大家了! 我如何在程序中切换输入法 怎么把一个COleDateTime类型的变量转成time_t类型(long型)变量? 结构成员这样定义 WCHAR bString[0]; 长度为0有意义吗? 关于DLL中的函数 如何动态分配指针数组? 哪里有关于delphi多线程资料下载? 急!!!SQL2000数据库IMAGE图象数据的存取?????? 这个存储过程怎么写? D7中的这个怎不见了啊-----急急 为什么只能传递两个汉字?有解决的办法吗? 关于DLL文件中的函数 lotus菜鸟请求急就!!!!!!!! 如何动态分配指针数组? 怎样实现点击按钮,将光标所在行的某列参数传到另一个form,显示出另一个表的某条相关记录? 这句话到底有什么含义??? T-SQL连接字符串的操作符号是? 问一个送分问题。 如何得到驱动器信息? (腊肉)欢迎讨论:简体、繁体同界面显示问题 請問在水晶報表里怎樣實現這樣的設計 谁有校友录? 欢迎讨论:简体、繁体同界面显示问题 用VB写了Lable控件,但不知如何把背景是否透明的属性加入 这堆警告是什么意思? 关闭API函数? 怎么按钮的字体的颜色改变不了? 关于图像识别,急急,谢谢 用Oracle8i(个人版)连接Oracle8问题(在线) 用quickreport如何做master/detail 報表 大家请看这段代码(部分):为什么returnValue第一次返回null,第二次返回正确??百分求解 发一个笑话--跟警察牛B的人 呵 请问如何用oledb连sybase11.9.2? 菜鸟问题 请高手指点 为什么服务器端用ontlitcp后informix无法启动呀?? 说能解释一下:阻塞和非阻塞,同步和异步的概念! 很急!拜托!! 欢迎讨论:简体、繁体同界面显示问题 图片上传的问题(100分) 如何直接向clob中插入数据并读出来(高分)? 硬盘使用求救 我是VB菜鸟 问一个很简单的问题 请大家看看 谢谢了 Validation控件 求救!!关于字体的问题 请问字符串函数Copy,CopyTo如何用啊? 在6.0环境下,对xml得支持怎么样? 专升本何种途径最快最省事? 恼人的问题! ***关于程序的独立运行? 求助!!!!!!!!!!!!!1 我想买不粘锅可他们说特氟龙不粘锅高温下可挥发出致癌气体不知道现在什么样的不粘锅最好?另外,据说韩国钻技锅是特氟龙改良后添加人工钻石粉,而且大理石不粘涂料(马夫涂料)也是特 硼酸可以用来配制标准缓冲溶液吗? 求危险化学品危险特性别表(100种)在豆丁网上搜到这个问题,但需要豆币,所以就是豆丁网搜到的问题. 怎么判断是搪瓷锅还是特氟龙不粘锅? 足量氨气通入含AlO2-的溶液中 会不会大量共存 什么是危险化学品?主要危险特征有那些? 搪瓷涂层与特氟龙涂层不粘锅怎么区分 5%硫酸溶液如何配制 有人知道氢氧化亚铁在空气中为什么会出现墨绿色沉淀吗?急需啊!我的课题!谢谢帮帮忙!小弟感激不尽! 哪里有简单又好画的板报花边 初2物理题 木块A的体积为500cm^3 质量为300g 用细线拉着浸没于盛水的圆柱形容器中 (线是拉着木块下面的 固定端在水底),容器的底面积为100cm^2,容器内水面高度为30cm,若剪断绳子后,木块静止 再生的意思是什么,不能再生的原因是什么,本来强调了什么,体现了说明文的什么 蔗糖水解,淀粉水解反应方程式? 木块A的体积为500cm^3 质量为300g 用细线拉着浸没于盛水的圆柱形容器中 (线是拉着木块下面的 固定端在水底),容器的底面积为100cm^2,容器内水面高度为30cm,求绳子的拉力T 《只有一个地球》第四自然段“不能再生”的原因是什么? 淀粉纤维素的水解是取代吗 请问:随着科技的不断发展时至今日微生物选择性培养基有哪些?(说明:目前能买到的培养基) 棉花糖机光把糖甩出来是为什么? 细胞膜上都有酶吗 简述细胞静息电位和动作电位的形成机制 求高中化学详细知识点 光化学烟雾的原理 (用12个方程式说明)据说是一位戴教授提出来的是 戴树贵《环境化学》中的 百科我看过了 没有 是用12 叙述如何用示波器测量直流电压的大小RT 要那种专门介绍官能团的 比如说 “双键 ,然后介绍双键的物性和化性和相应的化学方程式,和双键有关的物质”要这样的知识点,要所有官能团,如果一个官能团有多种物质 比如醇和酚,在分别 要是有纸写下来就更好了! 静息电位是怎样形成的 高中化学有机的知识点谁有? 一台电动车正常工作时先两端电压为380v,线图中电流时10A,这台电动机正常工作10min消耗多少电能? 一甲基环己烯与氯化氢反应 是不是所有的物体都能够辐射紫外线 一道物理题,(第九题) 化合物A的分子式C7H140与浓硫酸共热生成甲基环己烯(无异构),求A的构造式 初中化学推断题需要的知识点归纳我Q.805463926 榴莲壳得作用 液体钙是用动物骨做的吗?因为是素食者,想请问液体钙是不是含有动物骨的成份呢? 何谓正相色谱和反相色谱?在应用上有什么特点 混沌(不可预测的运动状态)真的存在吗我认为一切事物都是按一定的规律运动,发展.只要前提的一切条件相同,那么后续的时间也一定会按相同的的规律发展.就像一个人的成长,如果在另一 以下不属于测定水平距离的方法 a、钢尺量距 b、视距测量 c、光电测距 d、天顶距测量 高密度脂蛋白的作用是什么? 太阳系里有没有混沌运动 等高线的概念是什么?等高线地图扫描有何优缺点? 高密度脂蛋白有什么作用? 酯类水解是取代反应么 是所有的酯类水解都是取代反应么 超视距雷达什么的, 0.576立方米的水缸有多少公升水 脂类 求专业人士帮忙!我所做的聚合物是长链的,主链有苯环,及吡啶环,侧链的末端是脂,侧链是X-C0O-Et想去酯化,也就是想将脂类水解,得到侧链为羧酸.聚合物是溶于THF的,在甲醇里面溶的不是很 急求』在制备氢氧化亚铁时,为何要先加稀硫酸? 请问高密度脂蛋白起什么作用 油脂能不能发生取代反应 水解算不算 2-甲基环戊醇+KMnO4+H2SO4=? 0.312立方米水是多少升 玉米的黄粒(A)为显性与白粒(a)为隐性,将一株纯和的黄粒玉米与一株纯和的白粒玉米相授粉.玉米的黄粒(A)为显性与白粒(a)为隐性,将一株纯和的黄粒玉米与一株纯和的白粒玉米相授 美国自然之宝葡萄籽提取物真的可以美白吗前天在 好生活购物网 要了一瓶 优惠的美国自然之宝葡萄籽提取物,说是可以美白,不知效果怎么样? 乙酰胆碱受体是一种通道蛋白 这句话错在哪里? 玉米子粒黄色对无色为显性.用无色玉米为母本,去雄后授以黄色玉米花粉,诺母本植株所结子粒中出现无色子粒,原因是A、父本是杂和 B、外来花粉授粉 C、多倍体不育 D、未受精为什么B对D不对 玉米粒有紫色,蓝色,红色等多种颜色.为什么 150mM PH=7.4的PBS缓冲溶液如何配? 一株黄色非糯性的玉米自交,子代中可能有的基因型是请分析各个选项,/> 有一支温度计,其玻璃管的内径和刻度都很均匀,但标度却不准确.用此温度计测量冰水混合物时,示数为一2摄氏做这道题有什么巧妙办法吗 什么是危险化学品,危险化学品的特征是什么? 日本浜名湖渔船失火 恰逢货船经过救起日本九州遭遇雾霾 政府呼吁民众尽量减玻利维亚北部发生坠机事故 已致8人死印度将发射火星探测器 被指火星探测失评论:新一轮财税体制改革应有新突破美国务卿称美国永远不会允许伊朗有核武民调显示超3/4德国人认为美国国安局克里开启中东之行 欲修复美国与沙特关罕见日食现象横扫非洲 遇恶劣天气仍壮日本进行最大规模军事演习 日媒受压力大学生寝室里开小超市营业俩月被学校勒中国云计算产业发展及大数据应用高峰论农夫山泉派员举报《京华时报》 称实行20家网贷平台陷兑付危机 投资人面临疑百度帮新客户侵权 百度老客户状告百美国国务卿克里促埃及政府勿延长全国紧局势动荡民众对政治改革灰心 埃及再现缅甸发生沉船事故 载有70人船只仅8民调显示超3/4德国人认为美国国安局美国国务卿克里促埃及政府勿延长全国紧局势动荡民众对政治改革灰心 埃及再现重庆涪陵:货车起火驾驶员被困车内无生青岛前海一线大巴限行获市民“点赞”旅央广评论:供给侧改革 不是要弱化国有重庆梁平至忠县高速控制性工程礼让隧道自提瓶装燃气成历史 上海明年底实现统《余罪》热播 作者和编剧掀口水仗甘肃立法:居民小区安全隐患处理不及时我参加环太平洋军演舰艇编队进行首次海申城难觅三元以下冷饮 \"火炬\"卖\"国民闺女\"关晓彤原来是学霸 你哥伦比亚政府与反政府武装签署最终停火小区居民偷倒垃圾堆满地 管理配套须完90后服务业蓝领跳槽最活跃 人均频率军报评论:缺乏打仗的意识 就没有演训火箭军某导弹旅生存谋道:胜敌先破心中\"幼升小\"暑假必须学拼音? 上海国内首部航运中心建设地方性法规在沪表安理会延长对刚果(金)境内武装团体制圆满完成3年任务 上海第9批15名援市城管执法局:四轮执法车不得在机动车盐城遭遇龙卷风 黄晓明baby致力公
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘