vb.net TCP/IP传送文件无法打开

wy_zhou 2020-09-14 01:00:08
各位大神,请指正:
我使用VB.net 使用TCP/IP在客户端和服务端传送文件时,文件能传送 过去,且大小 一致,但有时却无法打开,特别是exe文件是100%打不开,请教原因?

客户端:
Sub file_trancelate_common(logon_IP As String, file_path As String)
Dim file_socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim endPoint As New IPEndPoint(Net.IPAddress.Parse(logon_IP), 9833) '
Dim file As FileStream = New FileStream(file_path, FileMode.OpenOrCreate, FileAccess.Read)
Dim byteArray(file.Length - 1) As Byte
Dim binaryRead As New BinaryReader(file)
binaryRead.Read(byteArray, 0, file.Length - 1)
file_socket.Connect(endPoint)
file_socket.Send(byteArray)
file.Close()
file_socket.Shutdown(SocketShutdown.Send)
file_socket.Close()

End Sub

服务端:
Sub file_load(IIP As String, pic_name As String, pic_counts As Int16, file_folder As String)

While isisrun
Dim fileStream As FileStream = New FileStream(Application.StartupPath & "\" & file_folder & "\" & pic_name, FileMode.OpenOrCreate, FileAccess.ReadWrite)
Dim byteArray(file_length) As Byte
Dim receiveSocket As Net.Sockets.Socket = file_socket.Accept()
Dim binary As New BinaryWriter(fileStream) '流写
receiveSocket.Receive(byteArray)
binary.Write(byteArray, 0, byteArray.Length - 1)
pic_tran = pic_tran + 1
If byteArray.Length - 1 = file_length Then
isisrun = False
fileStream.Close()
receiveSocket.Shutdown(SocketShutdown.Receive)
receiveSocket.Close()
End If
End While

End Sub


别外,想问下:怎样实现将文件的一些信息和文件封装在一个块中,如将文件的大小 、格式等 信息和文件一起发送给服务端?
...全文
2294 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziqi0716 2020-09-15
  • 打赏
  • 举报
回复
建议: 使用ftp协议进行文件传输或其他协议. 服务端开个ftp服务,客户端去连接,并进行文件上传操作. 找个现有的轮子直接用,这个轮子已经帮你处理好连接,文件头信息,数据可靠性检查等等问题.

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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