3.1 Internet上的文件传送实现方法
当计算机A向计算机B之间要求文件(包括上传和下载)传送时,首先向计算机B发送文件传送请求——第一“握手”,之后才进行真正的文件数据传送。Winsock的SendData 方法发送的数据默认数据文件数据传送中,
第一次握手:文件传送(上传,下载)请求数据格式:
操作类型 文件名 文件块大小 文件块数目 最后一块大小(字节)
0:上传 当地文件名 1kb(默认) 文件长度/块大小
1:申请下载 远程计算机中的文件名
第二次握手:文件传送(上传,下载)请求响应操作及回复信息
上传响应:发送OK,告诉对方可以开始传送数据
下载响应:传送文件块数目+块大小+最后一块字节大小
之后,计算机之间进入真正的文件数据传送中。
如此反复,直至文件的数据块传送完毕,在传送中间可以根据传送块的剩余数目显示进度条。
3.2 用户登录管理
⑴用户登录机制
为保证安全性,用户登录采用加密传送用户名及密码,用户登录机制如下:
当客户机向服务器发出登录请求时,服务器生成相应的Winsock对象接收(Accept)客户机Winsock,从而建立服务器与不同的用户之间的消息通道。
⑵Winsock服务器建立多客户连接的方法:
首先在服务器中建立Winsock数组Winsock1(),其中Winsock(0)进行“侦听”,当客户机发出连接请求(clintWinsock.Connect 服务器IP地址,服务器侦听端口)时Winsock(0)产生如下消息:
|
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long) If Index = 0 Then ’主Winsock——Winsock(0)发生消息 i = 1 While i <= cur And onl(i, 0) = 0 ’在以前的Winsock中找到空闲的Winsock i = i + 1 Wend If i <= cur Then ’在当前装载的Socket中发现有用户已经离开 Winsock1(i).LocalPort = 0 ’使用现成的Socket Winsock1(i).Accept requestID ’接收 onl(i, 0) = 0 ’Winsock(i)被占用 Else ’在当前装载的Socket中没发现有用户离开 cur = cur + 1 ’当前接收端口增加 Load Winsock1(cur) ’生成新的’ Winsock Winsock1(cur).LocalPort = 0 Winsock1(cur).Accept requestID ’接收 onl(cur, 0) = 0 ’Winsock(cur)被占用 End If End Sub |
之后,服务器利用生成的Winsock(i)与第i个用户通信。
保留:: http://www.qqread.com/vb/d302107100.html相关专题
- VB+Access设计图书管理系统 (104238次浏览)
- VB设计有语音报时和报警功能的闹钟 (13528次浏览)
- 用VB制作一个简单的MP3播放器 (8172次浏览)
- DataGrid 控件的使用 (5010次浏览)
- 用VB编写记事本 (4443次浏览)
- IP地址与子网掩码(二) (4152次浏览)
- IP地址与子网掩码(三) (3708次浏览)
- 掌握VB中的ADO数据对象编程 (3504次浏览)
- 在VB下设计开发实时的数据采集曲线 (3403次浏览)
- VB中使用WinSock控件编写网络程序 (3400次浏览)



