扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:petery 来源:论坛 2007年10月15日
关键字:
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个用户通信。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者