怎么用winsock来传递整个文件,就像收邮件的附件一样

mhuang 2000-04-04 04:42:00
rt
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
兴导 2000-04-29
  • 打赏
  • 举报
回复
以下是vb做的,供你参考:


Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub SendFile(FileName As String, WinS As Winsock)
Dim FreeF As Integer
Dim LocData() As Byte
Dim LenData As Long
Dim sendloop As Long

FreeF = FreeFile
Open FileName For Binary As #FreeF
ReDim LocData(1 To 2048) As Byte
LenData = LOF(FreeF)
For sendloop = 1 To LenData \ 2048
Get #FreeF, , LocData
WinS.SendData LocData 'Send the chunk
Next
If LenData Mod 2048 <> 0 Then
ReDim LocData(1 To LenData Mod 2048) As Byte
Get #FreeF, , LocData
WinS.SendData LocData
End If
Close #FreeF
Sleep 200
End Sub

Public Function oPD(Text As String) As String
Dim TextC As String * 3
Dim G As Long
Dim TextX As String
Dim x As Long

G = Len(Text)
For x = 1 To G
TextC = Asc(Mid(Text, x, 1))
TextX = TextX & TextC
Next x
oPD = TextX
End Function

Public Function rPD(Text As String) As String
Dim TextC As String * 3
Dim G As Long
Dim TextX As String
Dim x As Long

G = Len(Text)

For x = 1 To G
On Local Error Resume Next
TextC = Chr(Mid(Text, x, 3))
TextX = TextX & TextC
Next x
rPD = TextX
End Function
alstamania 2000-04-25
  • 打赏
  • 举报
回复
你是不是碰到接收端丢数据的情况?若是这样,可用setsockopt()将接收缓冲区增大。
OpenBall 2000-04-06
  • 打赏
  • 举报
回复
简单。
管它什么格式,存到磁盘上还不都是01001101,用二进制形式打开文件,读入内存块。

在接受方,再新建文件,也是二进制格式,直接写入即可。
mhuang 2000-04-04
  • 打赏
  • 举报
回复
(1)我不知道文件的格式怎么打开呢?
(2)我需不需要在接受的时候建立那个文件呢?应该要吧,怎么建
zzh 2000-04-04
  • 打赏
  • 举报
回复
把整个文件以流的形式传过去不就得了,然后在另外一面接收。或者以打包的形式传递,当然,你可以加上校验码。

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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