winsock文件传输问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:21:13
使用WINSOCK的TCP协议传输文件,服务器端用WINSOCK数组与客户端建立连接,在服务器端实现用户的登陆验证,客户端要发送文件时,首先发送一个自定义的字符串后再加上文件名和大小(filetype:#filename#size),服务器端根据文件名建立空文件,客户端再读入文件的二进制,在二进制数据前加入自定义的字符串发送到服务器端,服务器端按照自定义的字符串判断数据并写入文件.
问题:客户端如何将自定义的字符串与读入的文件二进制数据打包到一起发送,服务器端又如何判断.
客户端:
data() as byte
winsock senddata "file:"+data()'这样肯定不正确,因为一个是字符串,一个是进制字节数组,

服务器端:(写在Sock_DataArrival里面进行判断)
Private Sub Sock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
sock(index).getdata dx,vbarray+vbbyte
if lenf(dx,5)="file:" then
'写入文件
请各位高手指点,应该怎样将数据打包和判断,或者有更好的方法实现.

建议你参考一下网上一些http下载文件的程序..

winsock senddata "file:"+data()
这样肯定不行,要么你把前面的文件信息转成数组,要么就直接发送,服务器端都以数组方式接收,收到以后尝试转换为字符串,如果是文件头信息就处理,不是就写入文件

客户端这样来做
读取文件名,大小等数据先发送过去,然后再打开文件以数组形式发送

服务器端,接收到数据时先看看是否文件头,如果是文件头则处理,不是文件头就直接写入

有问题你可以继续补充

都用byte数组解决。