关于vb.net中Socket的问题我不给你代码了,我才编了SOCKET的 , 告诉你原理吧(我的编程经验而已)
SOCKET传输文件和接受是有大小限制的,默认是81**来则也就是8K多,你可以改小 , 但改大我没试过 , 然后你必须把文件分成若干份 , 然后传过去 , 然后在接收端组合起来,同时接收端的接受大小要和发送大小统一 。
至于你说的文件名,文件名不属于文件数据中的一部分,它不参与数据传输的,你只能在接收端重新改名字 。
同时为什么要用上面的方法传呢,因为VB.NET中的SOCKET有很多问题 , 我就为此烦过,因为要丢包(理论上TCP不存在),或者粘包,或者断包,也就是你在接收端获取文件时数据是要出错的,比如你定长3000B,结果接收端可能先收到2000B,当接受端接受后,处理会出错的 。
所以SOCKET的标准发送方法是建立定长的结构体(结构体必须定义为可序列化结构体),最好结构体里面至少包含有 1,文件名,2,本包序号,3 , 本包数据,比如每个包大小3040B,文件名占20,序号占20,数据占3000,然后发送出去,接收端每次固定接受3040B,如果接受到的包没有这么大(比如收到2000),那么继续接受(1040),直到达到3040后组合成一个包,在把包分解成结构体 , 相同的文件名为一个文件,再按照序号按次组合其中的数据 , 这就完成了传输 。这样的方法还可以同时传送多个文件,因为结构体里面包含了文件名和序列号,不会错乱 , 如果是大文件,请不要接收完毕后(最后一个包的序号可以为-1,或者包里包含总长度 , 检查到序号为-1时表示完毕,或者达到总长度后表示完毕)再组合,因为这样会浪费电脑内存,最好的方法是一边接受数据,一边写入到文件中(收到第一个包时就建立文件,以后每个包的数据都往里面写) 。
回答你的问题:
1、经过上面的传输后,文件是不变化的,MD5检查都是正常的,不用担心文件大小有变化(如果有变化,那就是代码没编对)
2,、文件名问题,我前面提到了,文件名是不参与传输的 , 它不属于数据中的一部分,比如同一个文件,不管你怎么改名字MD5是不变的 。你只能通过把文件名想办法传给对方(比如我上面说的结构体方法),让对方写入文件时使用 。
3,代码:
还是给你找找吧,等等
不行,我的都很大,很长,你还是在网上找吧 , 有很多例子,我也是网上学的 。
vb.net 做的通信程序,设备掉电后出错:无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接看下这个异常的类型 在捕捉异常的时候处理为关闭并重新打开端口监听(这个看你自己需求) 然后在socketException下面再catch其它exception 进行弹出错误提示之类的操作 就可以了
VB.net串口通讯接收数据写法Do
Application.DoEvents()
Loop Until MSComm1.InBufferCount = 13
Dim a As String = MSComm1.Input
Label1.Caption = a.Substring(1, 9)
Label2.Caption = a.Substring(10, 3)
用vb.net实现网络通信用 vb.net socket通信
Dim th As Threading.Thread
2Dim tcpl As System.Net.Sockets.TcpListener
3
4Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
5th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))
6th.Start()
7End Sub
8
9Public Sub SendMessage()Sub SendMessage(ByVal IP As String, ByVal SendMsg As String)
10Try
11If IP"" Then
12Dim tcpc As New System.Net.Sockets.TcpClient(IP, 5656)
13Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream
14Dim reqStream As New IO.StreamWriter(tcpStream)
15reqStream.Write(SendMsg)
【vb.net蓝牙通信 winform蓝牙通信】16reqStream.Flush()
17tcpStream.Close()
18tcpc.Close()
19End If
20Catch ex As Exception
21MsgBox(ex.Message.ToString)
22End Try
23End Sub
24Private Sub MyListen()Sub MyListen()
25Try
26Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName).AddressList(0)
27tcpl = New System.Net.Sockets.TcpListener(ipAddress, 5656)
28tcpl.Start()
29While True
30Dim s As System.Net.Sockets.Socket = tcpl.AcceptSocket()
31Dim MyBuffer(1024) As Byte
32Dim i As Integer
33i = s.Receive(MyBuffer)
34If i0 Then
35Dim lstrRec As String
36Dim j As Integer
37For j = 0 To i - 1
38TextBox1.Text= Chr(MyBuffer(j))","
39Next
40End If
41End While
42Catch ex As Exception
43MsgBox(ex.Message.ToString)
44End Try
45End Sub
46
47Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
48SendMessage("192.168.0.61", TextBox2.Text)
49End Sub
vb.net使用如密狗加密狗怎么使用 , 分为以下几个步骤 。
1、做加密软件之前先安装好客户端CodeMeterSDK 。打开客户端,进入CodeMeter功能导航界面 。
2、打开AxProtector自动加密工具 。打开加密工具界面后,选择您要加密的程序类型,根据开发者软件的特点进行选择 。
谁能提供一些VB 。NET关于蓝牙编程的实例啊去网上找蓝芽vb.net蓝牙通信的SDK.....
新手vb.net蓝牙通信的话,最好先学好基础vb.net蓝牙通信的..一开始就搞那个不好..
关于vb.net蓝牙通信和winform蓝牙通信的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- go语言反引号 go struct 反引号
- 函数的C语言编程 函数的c语言编程代码
- 如松微信公众号文章,公众号neo的文章如何
- 游戏竞技类型,游戏竞技类型怎么选
- go语言编程对话框 go语言编写
- 春茶直播带货口号标语,茶叶直播带货销售方案
- html5的页面能在IE中显示吗,html5 ie8
- 经营姬院游戏,经营slg汉化
- 金立手机怎么查正品,金立手机怎么查正品新机