谁能给我一个基于DUP协议的可靠数据传输的源代码?

分为两部分一个是服务器端,一个是客户端。最好是用java语言编写的,vb,vc的也行。其它的就不用了。我当然知道UDP不可靠了,所以其上一层的代码实现就会比较难,TCP协... 分为两部分一个是服务器端,一个是客户端。
最好是用java语言编写的,vb,vc的也行。其它的
就不用了。
我当然知道UDP不可靠了,所以其上一层的代码实现
就会比较难,TCP协议经几次握手之后才建立连接,慢慢
传输数据,其协议本身就可靠,所以代码实现当然要
简单许多。
要的是:基于UDP协议
展开
 我来答
百度网友1195e78
2005-06-27 · TA获得超过267个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:0
展开全部
如何用vb的winsocket解决udp文件传送丢包的问题

udp协议是1种无连接的协议,他和tcp协议比较有传输速度快,占用资源少的问题。
但是由于udp协议本身没有自动找包的功能,因此经常会出现丢包的现象,会造成传送的文件丢包的现象
因为时间匆忙和水平有限,本人在效率上没有作优化,只是简单的实现,请大家自己看源码吧
注释:
主要功能:把文件猜成4k大小的包 在包头+上包的长度 接受了1个包判断长度是否和接受的长度相符如果

符合那么就继续发,如果出现丢包那么就从发
希望大家有什么好的建议通知我,我会尽量完善的
Option Explicit
'==============================================
'===============================
'udp传文件
'客户端
'作者: 影子
'================================
'==============================================
Dim FileNumber As Integer '用来存文件的句柄
Dim LenFile As Long '文件的长度
Private Sub Command2_Click()
closefile
End Sub

Private Sub Form_Load()
Winsock0.LocalPort = 5698
Winsock0.Bind
beginfile
End Sub
Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
Dim FileByte() As Byte
Winsock0.GetData FileByte, vbArray + vbByte '接收类型为:字节数组
Dim mendByte() As Byte, i As Long, j As Long
Dim temp As String, temp1 As String
'获得包长
j = UBound(FileByte)
'合并包头
For i = 0 To 7 Step 2
temp = temp & Chr(FileByte(i))
Next
'比较长度看丢包没有
If Val(temp) = j Then

ReDim mendByte(j - 8)
' 提出包头
For i = 0 To j - 8
mendByte(i) = FileByte(i + 7)
Next
' 写文件
Put #FileNumber, , mendByte
' 发送继续发送的请求
frmmain.Winsock0.SendData "ok"
Else
'出现丢包,请求重发
frmmain.Winsock0.SendData "no"
End If
End Sub

Public Sub beginfile()
FileNumber = FreeFile '取得未使用的文件号
Open "c:\aaa.exe" For Binary As #FileNumber '打开文件
End Sub

Public Sub closefile() '关闭文件句柄
Close #FileNumber
End Sub

Option Explicit
Dim GetFileNum As Integer
Dim LenFile As Long
Dim Sendbaye() As Byte '发送的包
'===============================
'udp传文件
'作者: 影子
'服务器端
'================================

Private Sub Command1_Click()
GetFileNum = FreeFile '取得未使用的文件号
LenFile = FileLen("d:\aa.rar") '获得需传送的文件的长度
Open "d:\aa.rar" For Binary As #GetFileNum '打开需传送的文件
Command1.Enabled = False
' 传送文件
Call TCPSendFile(frmmain.Winsock0, GetFileNum, SplitFile)
Text1.Text = Now
End Sub

Private Sub Form_Load()
frmmain.Winsock0.RemoteHost = "192.168.0.12" '服务器ip
frmmain.Winsock0.RemotePort = 5698

End Sub
'=========================================================================
'为了清晰,下面分别用两个子过程来完成计算这次还可以传多少个字节的数据和传送数据
'==========================================================================
Private Function SplitFile() As Long '拆包
On Error Resume Next
Dim GetCount As Long
'计算出这次可发送的字节数
If LenFile >= 4000 Then
GetCount = 4000
LenFile = LenFile - GetCount
Else
GetCount = LenFile
LenFile = LenFile - GetCount
End If
SplitFile = GetCount

End Function
Private Sub TCPSendFile(objWinSock As Winsock, FileNumber As Integer, SendLen As Long)
Dim FileByte() As Byte, i As Long, j As Long
Dim temp As String
ReDim Sendbaye(0)

Dim tempa As String * 4
ReDim FileByte(SendLen - 1)
tempa = SendLen + 7
Sendbaye = tempa ' 把长度负值给包头
Get #FileNumber, , FileByte '读取文件
ReDim Preserve Sendbaye(SendLen + 7) '把包头+到文件头
For i = 0 To UBound(FileByte)
Sendbaye(i + 7) = FileByte(i)
Next
frmmain.Winsock0.SendData Sendbaye
End Sub

Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
Dim str As String
frmmain.Winsock0.GetData str
Select Case str
Case "ok"
'成功继续发送
If LenFile = 0 Then '发送完成
MsgBox "成功"
Exit Sub
End If
Call TCPSendFile(frmmain.Winsock0, GetFileNum, SplitFile)
Case "no"
'不成功重发上一个包
frmmain.Winsock0.SendData Sendbaye
End Select
End Sub

参考资料: http://www.baidu.com/s?wd=zyg0 udp

光派通信
2024-09-03 广告
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. ... 点击进入详情页
本回答由光派通信提供
宛到自然982
2005-06-29
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
用一个文件记录所有的UDP消息,仿照tcp类似思想,采取捎带的方式确定消息的传输;采取窗口的方式滑动消息。总而言之,还是采用TCP类似的思想,还不如用TCP。
只有需要不完全可靠的UDP传送,才会考虑UDP方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
果冻果冻就这样
2005-06-27
知道答主
回答量:7
采纳率:0%
帮助的人:1.2万
展开全部
大哥,UDP下的传输都是不可靠

你现在倒好,来求UDP下的可靠的数据传输的源代码

还是去只要TCP吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
立志以和7240
2005-07-07
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
我有vb写的一个基于udp协议的可靠数据传输的例子。
是收发邮件。要的话给发mail
z1999ml@sina.com
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
俊秀又温厚丶繁星4852
2005-06-30 · TA获得超过656个赞
知道小有建树答主
回答量:939
采纳率:0%
帮助的人:0
展开全部
你现在倒好,来求UDP下的可靠的数据传输的源代码

还是去只要TCP吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式