编程论坛
注册
登录
编程论坛
→
VB6论坛
UDP 本机通讯是否会丢包
邵帅
发布于 2014-08-23 08:40, 3756 次点击
UDP 本机通讯是否会丢包
本机通讯走的是环回地址,即走的这样的路线应用程序->传输层->网络层----网络层->传输层->应用程序。数据的处理都是发生在本地计算机的内存中,因此我认为不会产生丢包,不知道是否正确?
8 回复
#2
风吹过b
2014-08-24 09:52
按我的理解来说, 本地环回是不会丢包的。
你是测试程序的 UDP 吗?
#3
邵帅
2014-08-25 09:41
向通过UDP进行进程间的可靠通讯。
#4
风吹过b
2014-08-25 11:56
进程间的可靠通讯。
老老实实使用 TCP 连接吧。
最少TCP连接,可以检测状态,而 UDP 就不行。
TCP 点对点,可以使用这种的方案:首先运行的那个程序进入服务器模式。
后面运行的程序为客户端模式,通过服务器进行编号。有客户端关闭时,都发消息给所有的所有客户端。每个客户端保存一份编号。
当服务器被关闭时,客户端最小的 进入服务器模式。然后每个客户端重新连接服务器端,并注册自己的编号。
或者 专门写一个 服务端。每个启动的进程,寻找一下,如果没有发现服务端,就运行一个服务端。然后连接服务端。
服务端写成 只允许运行一个。当服务器端被中止时,进程自动寻找一下,如果没找到,运行一个。
#5
xzlxzlxzl
2014-08-25 16:38
进程间通讯貌似DDE挺方便的,不需要socket。
#6
风吹过b
2014-08-25 21:06
使用 TCP ,主要的原因是要 随时检测另一个进程是否存在。
Tcp有 状态可以供检测。而 DDE 只是通讯。没有状态可供判断。
#7
邵帅
2014-08-27 17:44
回复 6 楼 风吹过 b
进程间通讯的确有多种方法。选择socket是因为应用场合为终端服务器下不同用户的不同进程进行数据交换。发现DDE和内存映射等都不能实现。
#8
邵帅
2014-08-27 17:44
回复 4 楼 风吹过 b
多谢指导。
#9
xzlxzlxzl
2014-08-28 22:03
无论是tcp还是udp、本地还是远程的,在不doevents延时的情况下,都会产生丢包现象(比如你连续传送8k字节以上的数据,你会发现接收端的数据有错),估计vb的winsocket控件使用的是异步响应机制,不是阻塞响应机制,我通常的解决方法是在传送大量(小于8K)数据后最后再传送一个32位校验数据给接收方校验,如果接收方回传校验正确再继续传送下一段,否则重新传送(好好像tcp的机制哦)
1