大讨论:关于VB Winsock。

gjjofefs 2009-04-22 11:33:06
加精
近来用到了winsock,有些地方钻研不够深入,所以想与各位讨论一下。
在VB中,服务器的winsock瞬间的连接量大概在三四十左右。也就是说,同一秒内,有三四十个客户端连接到服务器,因为使用的是tcp,所以就使用了winsock的控件数组,有多少个连接就建立多少个winsock。请问,如果这个瞬间的连接量再大很多的话,服务器能不能承受?比如说1000或者更多。
当然,这个瞬间的连接量只是服务器程序刚刚启动时才有的,因为客户端是有限的,所以就现在的情况来看,最大的连接数是100.
因为以后要增加客户端,所以在服务器程序打开的时候,客户端就会一起对服务器进行连接,这个连接时很快的,在服务器开始的一两秒内,就会有1000甚至更多的Tcp进行连接,服务能不能承受?
...全文
1537 63 打赏 收藏 转发到动态 举报
写回复
用AI写文章
63 条回复
切换为时间正序
请发表友善的回复…
发表回复
suyiping2012 2012-09-05
  • 打赏
  • 举报
回复
冒个泡
fac123123 2012-07-28
  • 打赏
  • 举报
回复
呵呵。~看完要回帖
hkchoose 2010-01-19
  • 打赏
  • 举报
回复
增加自身美德
煤油灯 2009-09-19
  • 打赏
  • 举报
回复
路过:(
jessezappy 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 vb6andvc6 的回复:]
各位啊,草民有一个问题:
用vb6winsock做通讯,服务端用winsock数组对应各个客户端。
那么这些数组它们是各自有一个端口号呢还是共用一个端口号?
曾试过这两种情况,均不能实现群通讯?不知为什么?


[/Quote]

使用TCP协议,客户端和服务端都使用同一个端口,服务端使用一个sock进行侦听 sock.Listen 方法 ,使用另一个控件数组响应请求,在sock__ConnectionRequest(ByVal requestID As Long) 事件中,使用Sock1(SockIndex).Accept (requestID) 方法接受客户端连接请求。这时 Accept 方法会自动分配端口给客户端用,而你不用考虑这个自动分配的端口号,这个是由winsock控件自动管理的,你只需要保证客户端设置的通讯端口和服务端的侦听端口相同即可。
苏门答腊 2009-09-17
  • 打赏
  • 举报
回复
以我的经验,没问题。
lhslktg 2009-09-10
  • 打赏
  • 举报
回复
hao
lhslktg 2009-09-09
  • 打赏
  • 举报
回复
1
shuihan20e 2009-09-08
  • 打赏
  • 举报
回复
mark
Tomzzu 2009-09-08
  • 打赏
  • 举报
回复
数量超过1000还是用 完成端口(IOCP)方式
无论使用哪种方式, 都要使用连接池
初始化时系统就准备好一系列的连接Socket, 或放在数组中, 有客户连接从再有的未数组中找出没有空闲的做对映
内心的声音 2009-09-08
  • 打赏
  • 举报
回复
就那样呗!!
yc513485587 2009-09-08
  • 打赏
  • 举报
回复
三分士大夫士大夫士大夫速度
yc513485587 2009-09-08
  • 打赏
  • 举报
回复
舒服撒房贷首付撒分
yc513485587 2009-09-08
  • 打赏
  • 举报
回复
气死铃铛多少师范师范的斯蒂芬
CNCPT01 2009-09-08
  • 打赏
  • 举报
回复
就算是所谓多线程和并发,在单一时间片 服务器(单CPU)还是只能处理一个请求. 这些,我们无法去考虑改进.除非为拥有多核资源,去采用多线程.
wxsan 2009-09-08
  • 打赏
  • 举报
回复
关注
CNCPT01 2009-09-08
  • 打赏
  • 举报
回复
在服务器开始的一两秒内,就会有1000甚至更多的Tcp进行连接,服务能不能承受?
个人认为 只要不耗尽系统资源.服务器是能承受的,只是响应速度会变慢而已.在你的 服务端未处理完响应之前,所有后来的响应都是被阻塞的吧.
CNCPT01 2009-09-08
  • 打赏
  • 举报
回复
http://d.download.csdn.net/down/176593/CNCPT01

以前用 VB 时候写的 四国军棋.未完善,但是里面用到了 WINSOCK ,里面的客户端连接处理机制还是可以供参考的~


Private Sub Sock_TCP_Close(index As Integer)
'将关闭的连接对应的用户 状态清0 除非已经在线。
Dim elem As stackelem
If index = 0 Then
MsgBox "a"
Else
Unload Sock_TCP(index)
elem.index = index
push elem
End If
With Sock(elem.index)
.index = elem.index
.RequestID = 0
.Connect_IP = ""
End With

End Sub

Private Sub Sock_TCP_ConnectionRequest(index As Integer, ByVal RequestID As Long)

Dim tmp_index As Integer
Dim elem As stackelem

If StackEmpty <> True Then
pop elem
End If
'MsgBox Sock_TCP(0).State
Load Sock_TCP(elem.index)

PRINTMSG "Connection Request!"


If Sock_TCP(elem.index).State <> sckClosed Then
Sock_TCP(elem.index).Close
End If

Sock_TCP(elem.index).Accept RequestID
PRINTMSG "Current Connection Accepted By Sock:" & CStr(elem.index) & "!"

With Sock(elem.index) '11/5 突然觉得这个结构现在没用,,,,
.index = elem.index
.RequestID = RequestID
.Connect_IP = Sock_TCP(elem.index).RemoteHostIP
End With

CountNum = CountNum + 1
PRINTMSG "Current Connection Comes From:" & Sock_TCP(elem.index).RemoteHostIP '为了简单起见放在这 严格上说 这样描述并步正确!
PRINTMSG "Current Connections:" & CStr(CountNum)

End Sub


Attribute VB_Name = "SockStruct"
Public Type Sockets
Index As Integer
RequestID As Long
Connect_IP As String
End Type

Public Type stackelem
Index As Integer
End Type

Public Sock(399) As Sockets
Public stack(399) As stackelem

Public s_top As Integer
Public s_base As Integer
Public Number As Integer
Public stack_empty As stackelem


Public Function StackEmpty() As Boolean
If Number = 0 Then
StackEmpty = True
Else
StackEmpty = False
End If
End Function

Public Function init_stack()
Number = 400
s_top = 400
s_base = 0
For i = 0 To 399
stack(i).Index = i
Next
End Function

Public Function push(elem As stackelem)
'由于只限制400 连接 不会出现三益出
stack(Number) = elem
Number = Number + 1
s_top = Number

End Function

Public Function pop(elem As stackelem)

elem = stack(s_top - 1)
Number = Number - 1
s_top = Number

End Function


cooltianshi 2009-09-08
  • 打赏
  • 举报
回复
学习了
shiweifu 2009-09-08
  • 打赏
  • 举报
回复
做SOCKET方面的开发还是用C来做吧
IOCP效率很高

如果想简单点,PYTHON的twisted库貌似也是个不错的选择
加载更多回复(42)
◆ 01.htm 1、怎么用mscomm控件检测modem是否与计算机联接正确?2、如何用mscomm挂断modem与别的电话机间的连接?(已接通) ◆ 02.htm CWinInetConnection---一个封装了WinInet API函数的类 ◆ 03.htm MODEM通讯意外处理 ◆ 04.htm MsComm 文字传输 ◆ 05.htm PING一个IP地址(向它发送一个数据包并等待回应) ◆ 06.htm SMTP协议简介 (Simple Mail Transfer Protocol) ◆ 07.htm VB5.0 中远程数据库的访问 ◆ 08.htm VB下如何编写CRC校验程序 ◆ 09.htm VBWinsock控制的UDP协议的使用 ◆ 10.htm Visual Basic 6中发送邮件的新方法 ◆ 11.htm Visual Basic通信程序设计 ◆ 12.htm Whois 示例程序 ◆ 13.htm Winsock Terminal示例程序 ◆ 14.htm WinSock断开导致客户端问题 ◆ 15.htm 把Outlook信箱中的附件另存为 ◆ 16.htm 保证连网计算机时间同步 ◆ 17.htm 编写网络寻呼机 ◆ 18.htm 编制自已的电话录音小程序 ◆ 19.htm 程序中如何启动默认的拨号连接 ◆ 20.htm 程序中如何启动默认的拨号连接? ◆ 21.htm 打开器并进入指定网址 ◆ 22.htm 打开一个直接到自己主页的器 ◆ 23.htm 得到用户的IP地址 ◆ 24.htm 电话拨号 ◆ 25.htm 电子邮件的标准格式 (RFC 822) ◆ 26.htm 断开拨号网络的连接 ◆ 27.htm 断开与 Internet 的连接 ◆ 28.htm 发送电子邮件附件 ◆ 29.htm 发送电子邮件附件1 ◆ 30.htm 发送电子邮件附件2 ◆ 31.htm 发送电子邮件附件3 ◆ 32.htm 发送电子邮件附件4 ◆ 33.htm 获得用户网络登录名 ◆ 34.htm 基 于Win95 的VB5 串 口 通 信 程 序 ◆ 35.htm 基于Win95的VB5串口通信程序 ◆ 36.htm 几个设置IE的API ◆ 37.htm 检测运程数据传送的断线 ◆ 38.htm 简单的聊天程序 ◆ 39.htm 简单电子邮件发送程序 ◆ 40.htm 建立拨号联接 ◆ 41.htm 将所有窗口最小化 ◆ 42.htm 利用IE控件访问Internet ◆ 43.htm 利用IE控件设计简易器 ◆ 44.htm 利用Mscomm32控件判断MODEM是否打开,或者正在工作,并且判断拨号时是否遇忙音 ◆ 45.htm 利用TAPI进行电话拨号 ◆ 46.htm 利用VB访问Internet ◆ 47.htm 利用VB设计聊天室 ◆ 48.htm 利用Visual Basic实现无线通讯 ◆ 49.htm 利用Winsock控件实现局域网通信 ◆ 50.htm 强制一个本地或远程NT系统关闭 ◆ 51.htm 取得网卡序列号 ◆ 52.htm 如何从 Internet 上取回某一个网页的內容? ◆ 53.htm 如何检测是否已连接到Internet? ◆ 54.htm 如何利用Winsock控件编写自己的Internet程序 ◆ 55.htm 如何每天抓取 Internet 上某一个网页中的图片来更换桌面的壁纸? ◆ 56.htm 如何启动拨号网路中的连线? ◆ 57.htm 如何使用MSCOMM32.OCX发送大于80H的字符,可否给个示例程序 ◆ 58.htm 如何通过VB获取网卡地址 ◆ 59.htm 如何用VB打开默认器或默认发信程序? ◆ 60.htm 如何用Visual Basic编写小型的网络系统 ◆ 61.htm 如何在程序中启动 NT 的【拨号连接】对话框 ◆ 62.htm 如何在程序中启动 NT 的【拨号连接】对话框? ◆ 63.htm 如何在网页上使用 VB5 制作的 ActiveX 控件? ◆ 64.htm 如何中断【拨号网络连接】 ◆ 65.htm 设计Browser及FTP程序 ◆ 66.htm 设计Chat程序 ◆ 67.htm 设计E-mail程序 ◆ 68.htm 设置计算机名称 ◆ 69.htm 使用VB获得一页的HTML代码 ◆ 70.htm 使用VB收发电子邮件 ◆ 71.htm 使用标签控件调出器 ◆ 72.htm 使用超链接和发送Email ◆ 73.htm 使用器的文件复制对话框 ◆ 74.htm 输入/输出篇 ◆ 75.htm 通过WnetEnumResource函数获得网络资源 ◆ 76.htm 通往 Internet 的捷径 ◆ 77.htm 显示计算机的名称 ◆ 78.htm 用 MAPI 控件实现发送邮件 ◆ 79.htm 用 WinSock 控件下载文件 ◆ 80.htm 用 Winsock 实现聊天的程序 ◆ 81.htm 用Internet Transfer编写FTP程序 ◆ 82.htm 用Sockets发送电子邮件 ◆ 83.htm 用VB 创 建 自 己 的 通 信 程 序 ◆ 84.htm 用VB5.0开发通信软件的技巧 ◆ 85.htm 用VB5开发IE ◆ 86.htm 用VB编写网络寻呼 ◆ 87.htm 用VB编写小型的网络系统 ◆ 88.htm 用VB创建自己的通信程序 ◆ 89.htm 用VB构建Internet的应用[微软提供] ◆ 90.htm 用VB开发标准CGI程序 ◆ 91.htm 用VB实现客户——服务器(TCP IP)编程实例 ◆ 92.htm 用VB实现客户服务器(TCP、IP)编程实例 ◆ 93.htm 用VB实现聊天讨论室和点对点会话 ◆ 94.htm 用VB写一个定时PING某IP的程序 ◆ 95.htm 用VB制作器 ◆ 96.htm 用Visual Basic 5.0设计E-mail程序(MAPI) ◆ 97.htm 用Visual Basic6.0编写客户服务器程序 ◆ 98.htm 用Visual Basic创建FTP组件 ◆ 99.htm 用Visual Basic开发数据库器 ◆ 100.htm 用Visual Basic轻松地设计Browser及Ftp程序 ◆ 101.htm 用Winsock控件发信Email ◆ 102.htm 用Winsock控件实现文件的下载 ◆ 103.htm 用Winsock实现点对点通信 ◆ 104.htm 邮件检查程序(二) ◆ 105.htm 邮件检查程序(一) ◆ 106.htm 在VB程序中怎样挂断拨号网络 ◆ 107.htm 在VB中操纵OLE服务器应用程序 ◆ 108.htm 在VB中利用UDP协议编写聊天程序 ◆ 109.htm 在VB中模拟实现邮件传输 ◆ 110.htm 在VB中如何得到网络中某一台电脑(电脑名)的网卡地质? (自己的) ◆ 111.htm 在VB中实现文件上传 ◆ 112.htm 在VB中实现文件上载 ◆ 113.htm 在VB中使用UDP协议 ◆ 114.htm 在VB中用Outlook发电子邮件 ◆ 115.htm 在WindowsNT网络中广播消息 ◆ 116.htm 在程序中打开 Internet 拨号连接窗口 ◆ 117.htm 在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intranet虽然可以建立聊天室,但实现点对点实时对话却比较困难。本人用WinsockVB自制了一套聊天室和对话系统,特拿来供同行们参考。 ◆ 118.htm 在应用中集成器 ◆ 119.htm 在桌面上建立一个 Internet 快捷键 ◆ 120.htm 怎样接收电子邮件(POP3协议简介) ◆ 121.htm 怎样用VB得知系统当前是否处于internet链结状态 ◆ 122.htm 制作自己的网络搜索软件 ◆ 123.htm 自动更新工作站的应用程序 ◆ 124.htm 自己的IE——用VB制作器 ◆ 125.htm HTTP协议(学习笔记) ◆ 126.htm HTTP协议四--关于Chunked编码 ◆ 127.htm IE器完全控制 ◆ 128.htm OICQ服务器系统通讯协议 ◆ 129.htm POP3协议的基本命令 ◆ 130.htm RAS API上的其他Function ◆ 131.htm VB + API 获取 IE 的 “代理服务器” 配制 ◆ 132.htm vb调用winInet API接口post数据到指定的url ◆ 133.htm vb开发通信软件 ◆ 134.htm vb设计数据库电子邮件程序(1) ◆ 135.htm vb设计数据库电子邮件程序(2) ◆ 136.htm vb设计数据库电子邮件程序(3) ◆ 137.htm vb设计数据库电子邮件程序(4) ◆ 138.htm vb设计数据库电子邮件程序(5) ◆ 139.htm vb设计数据库电子邮件程序(6) ◆ 140.htm VB实现应用程序在局域网上自动更新 ◆ 141.htm VB邮件检查程序 ◆ 142.htm vb中从域名得到IP及从IP得到域名 ◆ 143.htm VB中检测是否连网 ◆ 144.htm WebClass实现动态WEB编程之理论篇 ◆ 145.htm Winsocket网络编程谈 ◆ 146.htm Winsock编程框架 ◆ 147.htm Winsock错误代码一览表 ◆ 148.htm 程式自动呼叫拨号网络(RAS API) ◆ 149.htm 打开一个超连接 ◆ 150.htm 得到登入windows 的人的id ◆ 151.htm 访问Internet并调用Explorer ◆ 152.htm 非同步文件下载类 ◆ 153.htm 给Outlook的所有用户发送信件 ◆ 154.htm 获得网卡的MAC地址 ◆ 155.htm 基于WinSock的小型网络管理系统及其实现 ◆ 156.htm 检测是否连接到Internet ◆ 157.htm 检测网络是否连通 ◆ 158.htm 建立Web的超链接树形图 ◆ 159.htm 建立你自己的器-Properties ◆ 160.htm 建立你自己的器-查看源文件 ◆ 161.htm 建立你自己的器-打印 ◆ 162.htm 建立你自己的器-打印设置 ◆ 163.htm 建立你自己的器-发送到FontPage ◆ 164.htm 建立你自己的器-发送到Visual Interdev ◆ 165.htm 建立你自己的器-发送到软盘 ◆ 166.htm 建立你自己的器-复制 ◆ 167.htm 建立你自己的器-另存为 ◆ 168.htm 建立你自己的器-全选 ◆ 169.htm 建立你自己的器-页面设置 ◆ 170.htm 开发通信软件的技术与技巧 ◆ 171.htm 开发网络应用的5个技巧 ◆ 172.htm 利用RAS调用在VB6.0中实现拨号上网 ◆ 173.htm 利用VB提取HTML文件中的EMAIL地址 ◆ 174.htm 枚举出局域网上所有网络资源 ◆ 175.htm 面向Internet的开发工具 ◆ 176.htm 你也可以YAI--VB5中Winsock控件的使用 ◆ 177.htm 判断一个文件是否在IE的缓存中 ◆ 178.htm 启动拨号网络中的连接 ◆ 179.htm 浅谈HTTP协议(二)--返回值 ◆ 180.htm 浅谈HTTP协议(一)--结构 ◆ 181.htm 如何利用 WebBrowser 控件显示 .GIF 动画? ◆ 182.htm 如何映射(中断网络磁盘) ◆ 183.htm 设计E-mail的接收部分 ◆ 184.htm 设置器默认网址 ◆ 185.htm 实现端口对端口的聊天 ◆ 186.htm 使用ASP建立Http组件 ◆ 187.htm 使用VB编写纯ASP程序 ◆ 188.htm 使用vb获取网上邻居里的计算机名 ◆ 189.htm 使用VB建立Web Server ◆ 190.htm 使用Visual Basic开发通讯软件 ◆ 191.htm 使用资源工具包执行本地和远程重新启动 ◆ 192.htm 谈谈远程控制中关于搜索、控制计算机的功能 ◆ 193.htm 压缩 Html ◆ 194.htm 用ASP、VB和XML建立互联网应用程序(1) ◆ 195.htm 用ASP、VB和XML建立互联网应用程序(2) ◆ 196.htm 用ASP、VB和XML建立互联网应用程序(3) ◆ 197.htm 用ASP、VB和XML建立互联网应用程序(4) ◆ 198.htm 用COMMUNICATION控件进行数据采集(学习笔记) ◆ 199.htm 用OLE自动化Outlook ◆ 200.htm ActiveX控件用于DHTML开发 ◆ 201.htm 用VB编写ActiveX DLL实现ASP编程 ◆ 202.htm 用VB编写Windows CGI应用程序 ◆ 203.htm 用VB编写标准CGI程序(上) ◆ 204.htm 用VB编写标准CGI程序(下) ◆ 205.htm 用VB编写收发电子邮件程序 ◆ 206.htm 用VB编写网络监控软件 ◆ 207.htm 用VB编写异步多线程下载程序 ◆ 208.htm 用VB导入导出IE器收藏夹 ◆ 209.htm 用VB定制合路器 ◆ 210.htm 用VB和XML建立集中式应用程序 ◆ 211.htm 用VB将Html转换为文本文件 ◆ 212.htm 用VB开发分布式应用 ◆ 213.htm 用VB设计基于代理服务器的网络计费系统 ◆ 214.htm 用VB制作文件下载程序 ◆ 215.htm 用Visual Basic 实现无线通讯 ◆ 216.htm 用Winsock制作一套聊天室和对话系统 ◆ 217.htm 远程共享显示及声音的实现 ◆ 218.htm 远程启动机器ABC API解决方案 ◆ 219.htm 远程启动机器ABC WMI解决方案 ◆ 220.htm 在VB5中利用Winsock和msDNS控件进行 ◆ 221.htm 找出计算机上当前登录入网的用户 ◆ 222.htm 用VB5 Winsock控件创建TCP(IP)客户机 服务器程序
中文名: Visual Basic 6大学教程 原名: Visual Basic 6 How to Program 作者: Harvey M. Deitel译者: 于伟 王刚 资源格式: PDF 版本: 扫描版 出版社: 电子工业出版社书号: 7505381377发行时间: 2003年01月 地区: 大陆 语言: 简体中文 简介: 内容简介    本书深入浅出地介绍了Visual Basic 6语言的基本概念和编程技术,包括对象、属性、方法、语句、函数、结构等基本问题,以及面向对象编程、数据库管理和网络编程等高级课题。全书共分为21章,系统地讨论了Visual Basic 6的编程技巧及应用,并且提供了大量实用和有趣的实例和习题。读者通过学习本书,可以在较短时间内掌握基本的和最新的程序设计技术。本书所配的“多媒体教室”光盘更是独具特色,通过交互式环境,使学习过程更加生动有趣。 目 录 第1章 计算机的概念 1 1.1 简介 1 1.2 什么是计算机 2 1.3 计算机的组成 2 1.4 操作系统的变革 3 1.5 个人计算、分布式计算与客户/服务器计算 3 1.6 机器语言、汇编语言和高级语言 4 1.7 Visual Basic的历史 5 1.8 其他高级语言 5 1.9 结构化编程 6 1.10 什么是Visual Basic 6 1.11 关于Visual Basic和本书的一般性提示 7 1.12 本书概览 7 小结 12 自测练习 14 自测练习答案 15 练习 15 第2章 集成开发环境 17 2.1 简介 17 2.2 集成开发环境综述 17 2.3 Project窗口 19 2.4 工具箱 20 2.5 Form Layout窗口 21 2.6 Properties窗口 21 2.7 菜单栏和工具栏 22 2.8 一个简单的程序:显示一行文本 22 小结 28 自测练习 31 自测练习答案 32 练习 33 第3章 Visual Basic 编程入门 35 3.1 简介 35 3.2 可视化编程和事件驱动编程 35 3.3 一个简单程序:在窗体上打印一行文本 36 3.4 另一个简单的程序:整数相加 40 3.5 内存的概念 44 3.6 算术运算 45 3.7 运算符的优先级 46 3.8 进行判断:比较运算符 48 小结 53 自测练习 55 自测练习答案 57 练习 59 第4章 控制结构(一) 62 4.1 简介 62 4.2 算法 62 4.3 伪代码 63 4.4 介绍控制结构 63 4.5 If/Then 选择结构 65 4.6 If/Then/Else选择结构 66 4.7 While/Wend循环结构 69 4.8 Do While/Loop循环结构 70 4.9 Do Until/Loop循环结构 70 4.10 构造算法:示例1(计数器控制循环) 71 4.11 自顶向下、分步求解的算法:示例2(标志控制循环) 73 4.12 自顶向下、分步求解的算法:示例3(嵌套控制结构) 78 小结 82 自测练习 84 自测练习答案 85 练习 87 第5章 控制结构(二) 92 5.1 简介 92 5.2 计数器控制循环的基础知识 92 5.3 For/Next 循环结构 93 5.4 使用For/Next循环结构的例子 96 5.5 Select Case多项选择结构 100 5.6 Do/Loop While循环结构 105 5.7 Do/Loop Until循环结构 106 5.8 Exit Do和Exit For语句 108 5.9 Boolean数据类型 109 5.10 常量变量 111 5.11 逻辑运算符 112 5.12 结构化编程总结 114 5.13 Visual Basic数据类型 119 小结 120 自测练习 120 自测练习答案 122 练习 123 第6章 子过程与函数过程 128 6.1 简介 128 6.2 窗体模块 128 6.3 Sub过程 129 6.4 Function 过程 134 6.5 按值调用与按引用调用 137 6.6 Exit Sub 和Exit Function 141 6.7 存储类 143 6.8 作用域规则 145 6.9 生成随机数 147 6.10 范例:一个机会游戏 153 6.11 递归与阶乘函数 157 6.12 另一个递归例子:Fibonacci序列 160 6.13 递归与迭代 162 6.14 可选参数 163 6.15 命名参数 164 6.16 Visual Baisc 数学函数 166 6.17 代码模块 167 小结 169 自测练习 171 自测练习答案 173 练习 174 第7章 数组 182 7.1 简介 182 7.2 数组 182 7.3 声明数组 183 7.4 使用数组的例子 184 7.5 给过程传递数组 190 7.6 数组排序 193 7.7 查找数组:线性查找和二分查找 196 7.8 多维数组 201 7.9 控件数组 203 7.10 动态数组 205 7.11 变长参数表:ParamArray 211 7.12 Array函数 212 小结 213 自测练习 214 自测练习答案 214 练习 215 第8章 字符串、日期和时间 224 8.1 简介 224 8.2 字符与字符串基础知识 224 8.3 String数据类型 225 8.4 利用 & 和 + 连接字符串 225 8.5 比较字符串 226 8.6 Like运算符 229 8.7 操作字符串中的单个字符:Mid$ 230 8.8 Left$、 Right$和InStr 232 8.9 使用InStr和 InStrRev函数在字符串里搜索子字符串 234 8.10 LTrim$、RTrim$和Trim$ 235 8.11 String$和 Space$ 236 8.12 使用Replace 函数替换子字符串 237 8.13 使用StrReverse函数反转字符串 237 8.14 转换字符串的大小写 238 8.15 转换函数 239 8.15.1 Asc 和Chr$ 239 8.15.2 IsNumeric、 Val 和Str$ 240 8.15.3 Hex$和Oct$ 241 8.15.4 类型转换函数 241 8.16 格式化字符串 243 8.16.1 Format$ 函数和命名数字化格式 243 8.16.2 Format$函数和用户定义数字化格式 245 8.16.3 FormatNumber函数 249 8.16.4 FormatCurrency函数 251 8.16.5 FormatPercent函数 253 8.17 处理日期和时间 254 8.18 格式化日期和时间 262 8.19 String数组 267 8.19.1 模拟洗牌与发牌 269 小结 272 自测练习 274 自测练习答案 274 练习 275 特殊小节:高级字符串操作练习 278 特殊小节:关于字符串操作的工程 280 第9章 图形 281 9.1 简介 281 9.2 坐标系 281 9.3 绘图方法 283 9.4 绘图属性 289 9.5 Line控件和Shape控件 292 9.6 颜色 294 9.7 图像 301 9.8 Printer对象 303 小结 304 自测练习 305 自测练习答案 305 练习 305 第10章 基本图形用户界面 307 10.1 简介 307 10.2 控件 307 10.3 TextBox控件 309 10.4 MaskEdit控件 311 10.5 ComboBox控件 314 10.6 ListBox控件 318 10.7 滚动条 322 10.8 Slider控件 324 10.9 菜单 325 10.10 弹出菜单 328 10.11 MsgBox函数 329 小结 333 自测练习 335 自测练习答案 335 练习 335 特殊小节:建立自己的计算机 337 第11章 高级图形用户界面 344 11.1 简介 344 11.2 多文档界面(MDI) 344 11.3 多窗体 352 11.4 模板窗体 356 11.5 RichTextBox 控件 360 11.6 UpDown 控件 364 11.7 ImageList 控件 367 11.8 ImageCombo 控件 370 11.9 FlatScrollBar 控件(专业版和企业版) 373 11.10 机器代码编译(专业版和企业版) 375 小结 376 自测题 378 自测练习答案 378 练习 379 第12章 鼠标和键盘 382 12.1 简介 382 12.2 改变鼠标指针的形状 382 12.3 鼠标事件 384 12.4 鼠标键 387 12.5 Shift、Ctrl和Alt键 389 12.6 拖放 391 12.7 键盘事件 396 12.8 KeyPreview属性 399 小结 400 自测练习 401 自测练习答案 402 练习 402 第13章 错误处理与调试 404 13.1 简介 404 13.2 何时使用错误处理 405 13.3 简单的错误处理例子:除数为0 405 13.4 嵌套的On Error语句 407 13.5 Err对象 409 13.6 Resume语句 411 13.7 错误处理程序和调用堆栈 414 13.8 重新引发错误 418 13.9 中断模式、Immediate窗口和Debug对象 420 13.10 防止程序错误的第一步 422 13.11 调试策略 422 13.12 调试器 424 13.12.1 Debug菜单和工具栏 424 13.12.2 Locals窗口 428 13.12.3 Watch窗口 429 13.12.4 Call Stack 窗口 430 13.13 调试器和错误处理程序 431 小结 431 自测练习 434 自测练习答案 434 练习 434 第14章 顺序文件处理 435 14.1 简介 435 14.2 DirListBox、FileListBox、DriveListBox控件 435 14.3 数据分层 438 14.4 文件系统对象 440 14.5 建立一个顺序存取文件 450 14.6 从顺序文件内读取数据 454 14.7 更新顺序存取文件 457 小结 458 自测练习 459 自测练习答案 460 练习 460 第15章 记录和随机存取文件 462 15.1 简介 462 15.2 随机存取文件 462 15.3 记录用户自定义类型 463 15.3.1 用户自定义类型的定义 463 15.3.2 操作用户自定义类型的成员 464 15.4 建立随机存取文件 465 15.5 向随机存取文件写入数据 469 15.6 从随机存取文件中按顺序读取数据 471 15.7 从随机存取文件中随机读取数据 474 15.8 范例:事务处理程序 477 小结 482 自测练习 483 自测练习答案 484 练习 484 第16章 面向对象编程 487 16.1 简介 487 16.2 数据抽象与信息隐藏 488 16.3 利用类实现一个时间抽象数据类型 489 16.4 类成员 493 16.5 合成:将对象作为其他类的实例变量 499 16.6 简介面向对象编程 503 16.7 带有部件的软件工程 506 16.8 类型域和 Select Case语句 506 16.9 多态性 507 16.10 Visual Basic接口 507 16.11 多态性举例 508 16.12 范例:IShape、CPoint、CCircle 509 16.13 范例:使用多态的支付系统 512 16.14 范例:图形的多态处理 518 16.15 利用接口继承和指派模拟实现继承 522 16.16 Object Browser 527 16.17 事件和类 528 小结 530 自测练习 532 自测练习答案 532 练习 532 第17章 ActiveX 536 17.1 简介 536 17.2 部件、COM和DCOM 536 17.3 ActiveX 控件类型 540 17.4 ActiveX 控件的生存期和事件 541 17.5 UserControl对象 542 17.6 创建包含构造控件的ActiveX控件 542 17.7 ActiveX 控件举例:Clock控件 549 17.8 ActiveX控件界面向导 554 17.9 属性页和属性页向导(Property Page Wizard) 563 17.10 ActiveX DLL 567 17.11 ActiveX EXE 570 17.12 Friend访问 575 小结 577 自测练习 579 自测练习答案 580 练习 580 第18章 数据库管理 582 18.1 简介 582 18.2 数据库系统 582 18.2.1 数据库系统的优点 582 18.2.2 数据独立 583 18.2.3 数据库语言 583 18.2.4 分布式数据库 583 18.3 关系数据库模型 583 18.3.1 关系数据库 584 18.4 介绍Microsoft ADO Data Control 6.0 585 和Microsoft DataGrid Control 6.0 18.5 关系数据库概览:Biblio.mdb数据库 588 18.6 结构化查询语言 590 18.6.1 基本的SELECT查询 591 18.6.2 WHERE从句 591 18.6.3 ORDER BY从句 592 18.6.4 使用INNER JOIN 从多个表中合并数据 593 18.6.5 Biblio.mdb中的全标题查询 593 18.7 再次讨论ADO数据控件和DataGrid控件 595 18.8 Hierarchical FlexGrid控件 597 18.9 DataList和DataCombo控件 598 18.9.1 范例:使用DataList和DataCombo控件 598 18.9.2 使用BoundColumn属性 602 18.10 使用Data Environment Designer 604 18.11 Recordset的其他程序化功能 607 18.12 事务处理 607 小结 608 自测练习 609 自测练习答案 610 练习 610 参考文献 611 第19章 网络、Internet和WWW 612 19.1 简介 612 19.2 Visual Basic Internet控件 613 19.3 WebBrowser控件 613 19.4 Internet Transfer控件 617 19.4.1 超文本传输协议(HTTP)连接 617 19.4.2 文件传输协议(FTP)连接 619 19.5 Internet Transfer控件的其他属性、方法和事件 621 19.6 Winsock控件 622 19.6.1 建立一个简单的服务器(使用TCP协议) 622 19.6.2 建立一个简单的客户(使用TCP协议) 624 19.7 范例:使用Winsock控件的客户/服务器交互 625 19.7.1 一个简单的基于TCP的服务器 625 19.7.2 一个简单的基于TCP的客户 627 19.7.3 客户/服务器交互的输出 630 19.8 Winsock控件和基于UDP的客户/服务器计算 631 19.8.1 一个简单的基于UDP的服务器 632 19.8.2 一个简单的基于UDP的客户 633 19.8.3 客户/服务器交互的输出 635 19.9 Winsock 控件的其他属性、方法和事件 636 19.10 Visual Basic Script(VBScript):综述 636 小结 645 自测练习 648 自测练习答案 648 练习 649 第20章 多媒体:图像、动画和音频 651 20.1 简介 651 20.2 Microsoft Agent 控件 652 20.3 多媒体MCI控件 658 20.3.1 多媒体MCI控件形成的CD播放器 660 20.3.2 一个多媒体MCI控件AVI文件播放器 661 20.4 Animation 控件 663 20.5 RealAudio ActiveX控件库 665 20.6 Marquee控件库 667 20.7 Microsoft ActiveMovie 控件 670 小结 672 自测练习 674 自测练习答案 674 练习 674 第21章 数据结构、集合和词典 676 21.1 简介 676 21.2 Variant类型 676 21.3 自引用类 677 21.4 动态内存分配 678 21.5 链表 679 21.6 堆栈 688 21.7 队列 691 21.8 树 693 21.9 Collection对象 699 21.10 Dictionary对象 701 小结 705 自测练习 706 自测练习答案 707 练习 707 附录A 运算符优先级表 713 附录B ANSI字符集 714 附录C Internet和WWW上的Visual Basic资源 715 附录D 数值系统 722

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧