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

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 并利用附带的安装程序安装到网络服务器上就可以真正实现" 联网" 了。

用来简化开发任务的20个JavaScript类库 煎饼,娇妻,Belief:黄太吉的移动互联网营销 AWS大降价:最高打两折 推荐十款超赞的Google Chrome扩展插件 在团队中进行单元测试/TDD的12条经验 小米游戏中心6月数据报告:页游转手游怎么搞? 司机请专心:安全是车载APP要解决的大问题 Windows 8之父Steven Sinofsky:跨平台开发会为什么越来越难? 一些达成共识的JavaScript编码风格约定 语义技术——微软、谷歌和Facebook的必争之地 初创公司PlumGrid:前思科工程师的“逆袭之战” Firefox OS智能手机继续扩张 德国市场今日开售 如果让莎士比亚、海明威编写JavaScript代码 开源的数据可视化JavaScript图表库:ECharts 已迭代1.3亿年的分布式系统——Anternet 软硬整合:14个可改变世界的Kickstarter项目 是时候放弃MySQL的五大理由 比特币钱包Coinbase推出即时交易功能,无需银行转账手续 回收不活跃邮箱续:雅虎高管称能保证前用户信息和数据安全 移动周报:IT民工携娇妻转战传统行业,黄太吉的移动互联网营销 独立游戏开发的传奇!LIMBO开发商Playdead公司CEO专访 Firefox OS模拟器4.0正式发布 支持模拟触摸事件 莫轻言已成功部署大数据,也许你离达标还相去甚远! 基于Java的四大开源测试工具 Firefox OS:称霸移动市场?我们的计划更长远! 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现 传苹果为iWatch招兵买马 以确保明年发布新产品 降价高达1200元的Surface RT,并不值得你购买 Daux.io:开源的项目文档生成器 避免代码注释的五大理由 安徽农信:30人,13轮测试,完成日均270万笔交易的综合业务系统架构调整 恢复数据库 有谁的信誉分比我低阿!!我送给他50分阿!! 谁能提供一个切实可用的“防止刷新页面重复提交表单”的方法 Web安装项目中的managed.msm和stdole.dll是何东东,何用?? java中字符串操作函数在哪?java中分解字串的函数(如asp中的:split)在哪个类中? 为何ACCESS出现“#已删除的”的记录? 欲交Java良师益友,愿伸援助之手请进。 关于复选框的初始问题(100份在线4:00-8:00 怎样在asp中把一个文件变成临时文件?? 求解奇怪问题,非常奇怪,分不够再加! 高分求IPMI开发资料 如何用Jtree将一个xml文件显示出来? 招聘系统分析员(北京) 深圳兼职电脑维护,哪个有兴趣? 求购 产品进销存源代码 VB or c# +SQL SERVER @@@@@@ 不送分而送现金!!!!! 谁能教我配置PHP服务器啊? 帮我看一下, 紧急求救!!!jsp的出错信息! 如何合并两个Image对象为一个Image对象 还有一个问题,帮帮我嘛! 高分请教高手!简单,看了你也是高手 代码编辑器的问题。 计论:大家都用什么工具进行数据库的比较? 我高中的班主任 请大家评评理,特别是JAVA版版主! 这样的SQL语句怎么写啊 form切换!VB.net里面如何在语句里调出别的FORM 如何用ADO连接EXCEL数据? 什么是上溯造型? 如何把console.write 输出很多内容保存到文件?thread.join()如何使用? 我想实现像网络蚂蚁那样在IE上点右键,把这个IE中的信息传送给我主程序,现在遇到两个问题! 控件的布局问题? 实例化算不算继承? 急!!!!关于SQL数据堵塞 请大家推荐一下哪个汇编集成环境比较好用?DOS下用什么?WIN下用什么? 向各位请教两个tomcat的问题:(谢谢) 高手请问 拉格朗日算法VB=>BCB 求ASP的字符串比较函数. 找C++BUILDER高手!! 我在做演示光盘,用camtasia录制的屏幕图象,可是在客户的机器上播放不出来,在线等待,解决问题马上揭贴! fastreport如何不进行预览而直接打印! 不使用下拉数据窗口,如何实现输入产品代码即可显示产品名称 大哥救命啊 一个简单问题,在一个Win32 applicaion 中如何使用CString变量! 在线等待! 倒霉!!!平白无故被副总扣了100点! 我高中的班主任 JBuilder的爱好者,请留下您的联系方式!谢谢,让我们共同进步! 未指定默认数据库驱动…… VC中如何添加数据库支持? 栽ejb-jar.xml中部署的Ejb QL怎么和Home接口中声明的查询连接起来,必须以ejbSelect开头吗? 如何通过程序调用荧光笔操作?急,在线等!高分相送啊! 如图,直线AB,CD与直线EF相交与点P,Q,∠APE=∠CQE,∠APQ=2∠CQE,求∠APQ、∠CQE、∠BPF的度数 如图,AC垂直BD,DF昰AB的垂直平分线,EC=EF,求角A的度数. 如图,在平面直角坐标系中,四边形ABCD是菱形,AD=4,点A的坐标是(0,2),求点B、C、D的坐标 一篇英语作文~不好意思,忘了题材…如果好的会加30分题材:上个星期天,刘老师带我们去附近的公园参加学雷锋做好事的活动。刘老师把我们分成三组,第一组的同学负责植树种花,第二 在平面直角坐标系中,四边形ABCD的顶点坐标分别为:A(-2,0)B(0,-2)C(2,0)D(0,2)求证:四边形ABCD是正方形 翻译一句表示英语不怎么好希望谅解的句子.请手工翻译:"我很担心我这不怎么好的英语,还请你谅解.”是不是要用到poor english?谢谢. A我是光明中学的一名学生.B年龄16.C爱好:集邮,滑冰,打网球,旅游等.D理想职业:导游或者英语教师. (a-b)的平方+12(a-b)+36=? x=0:pi/100:6*pi;b=(cos(x)+i*sin(x))*(x);然后就提示Error using ==> mtimesInner matrix dimensions must agree.了,我是新手,刚接触matlab 此较电子辞典与字典的优劣.要求写出你选用的辞典及理由 指意思含畜深刻.令人回味.词是什么 就连在睡梦中也想着它(打一成语) 映射的个数映射f :A→B,如果满足集合B中任意一个元素在A中都有原象,则称为"满射".已知集合A中有4个元素,集合B中有3个元素,那么从A到B的不同满射有多少个? 我小孩已经上初一了,不知如何帮他. 连在睡梦中也想着他 根据意思写成语 求Owl City的照片清晰 正面侧面无所谓 最好美型一点~ “六宫粉黛无颜色”下句是什么? 难以说出其中的奥妙.也用来形容人语言、行动使人无法理解. Owl city上海演唱会情况.曲目. 在四边形ABCD中 AB=BC∠A=∠C 求证 AD=CD 不能说出其中奥妙,无法理解或不合常理(成语) 关于 OWL CITY我以前比较刺激的歌,我听完这个乐队的歌后,我的音乐审美观一下就变了.喜欢他的小清新了.这是怎么回事? 在四边形ABCD中,已知AD//BC,角B=角C,求证:AB=CD. 葛来美用英文怎么说? 风采 风彩两个词的区别 阜,旁边加的提土旁拼音怎么拼? 求关于葛家族的英文介绍,还要中文翻译 风彩飞扬,风采飞扬 求文字功底好的给我区分哈?青春舞动,风彩(采)飞扬,该用哪个cai 有一首歌歌词是:请你现实一点,别活在虚幻里面.失败也在所难免,未来在你手心里面.这首歌叫什么? 葛的英文发音是怎样的? 柬埔寨,共有几划 连成复合词1water A berry2 birth B man3straw c melon4school D boy翻译 金星的父母是干什么的 化简:{sin(2派-α)cos(3派+α)cos3派/2+α}/{sin(-派+α)sin(3派-α)cos(-α-派)} 柬埔寨这三个字怎么读呀```用拼音表示出来谢谢`!``柬埔寨是不是世界上最穷的国家之一呀```那里是不是`都是人妖啊``谁能详细说说啊```那么穷的话为什么人们要出国去那里呀``是不是都是去 《与朱元思书》中统领全文的句子是什么? 请问look as if与seem as if有什么不同? 柬埔寨 这3个共有多少划 解释词语中横前的字或词标-新立异革-故鼎新截然-不同怒气 冲冲-触类-旁通一-如既往 第六题, 看守所 三个字有几划啊? 表示‘叫’的词语 不是动物的词 天梭表什么型号有海拔高度功能 闷的多音字 《与朱元思书》里表现全文的句子是?有急用! 天梭touch怎么调海拔如题,怎么调touch的海拔 黄金戒子怎么买黄金戒子怎么选购,怎么挑选,怎么看价格! 1、《与朱元思书》中统领全文的中心句是:.作者抒发感慨卒章显旨的句子是:; . 映射个数. 若代数式m乘以x的五次方加n乘以x的三次方加p乘以x减4.当x=2时,此代数式的值为5;则当x=-2时,此代数式的值为多少?代数式为:mx5(5次方)+nx3(3次方)+px-4 英语单词记忆捷径词素认知怎么样 CQE是什么意思? 方言和语言有什么区别? 我们永远都这样好吗?的英语单词 如图.直线AB、CD与直线EF相交于点P,Q.角APE=角CQE\x08,角APQ=2角CQE\x08,求角APQ,CQE,BPF的度数 新警察故事最后的结尾是什么意思 六年级上册语文一单元读读写写和读读记记(人教版的)!注意是人教版6年级上册语文.时间今天以内, 直线ab,cd与直线ef相交于点p,q∠ape=∠cqe,∠apq等于2∠cqe,求∠apq,∠cqe,∠bp(急求) 在一元一次方程的部分,有这样一个题,有点没明白!庙内共有363只碗,三僧共用一只碗,四僧共食一碗羹,求庙内共有多少个僧? 好吧我原谅你 但是这次原谅了 还有下次吗 我不希望有了 翻译英文 海外赴澳工作人员升至173万人 威胁浙江将出台“社会组织建设”地方标准浙江汽车消费增幅回升 金银珠宝类商品中央巡视组已进驻广东等7地区单位 联上海近八旬英式老建筑启动平移 移38江苏将建150万亩永久性蔬菜基地南京地铁或将下发“禁食令”地铁禁食将万圣节郭美美杨贵妃妆扮吓呆网友 称最南京市农委加大监测 确保市民吃上放心“农家乐”食品安全存隐患 南京农委表中国部分军事设施现安全隐患 影响武器女子因口角棍击刀捅杀死丈夫 分尸蒸煮10月全国平均气温较常年偏高 呈现“从对等的不了解开始对话欧元区面临通胀过低威胁二成美国人称见过鬼 女性比男性更易“美国万圣节迎购物潮 商家赠特色礼品揽纳粹盖世太保头目被指埋葬于柏林犹太人二成美国人称见过鬼 女性比男性更易“美国万圣节迎购物潮 商家赠特色礼品揽美国多地举行万圣节游行 街头惊现“包香港给恶性竞争套上“紧箍咒”台“姜母鸭酒驾族”成另类李克强同哈萨克斯坦总理会谈支付宝“双十二”试水台湾中国斩获国际乒联总决赛三冠军台积电登陆设厂为何慢了一年?迁地护江豚5年增至60头中韩将举行海域划界谈判新寨喜迎“十月年”三星W2016手机演绎商务传奇乌镇再成热点垃圾智能分类明年小区试点粤港澳将联合研究PM2.5明年经济总基调稳中求进海军编队抵夏威夷访问“2016中国文字·书法论坛”征稿启政治局为经济工作会议定调责编:赵鹏飞邮箱:hwbjjb@16产学研合作创新大会春城举行北京是块戏曲宝地(名家话北京)在美林谷爱上冬雪
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘