2010-01-18 38 views
0

我的服务器使用UDP。它被收购后自动发送900bytes/1ms到我的程序。我在Windows中使用套接字API(VB 6)。我做了测试,我知道我的程序的消息处理时间(大约0.3ms)比周期时间(1ms)短。所以原因应该是socket内部缓冲区。我尝试调用setsockopt函数来设置更大的缓冲:使用套接字API的UDP

setsockopt的(SockNum,SOL_SOCKET,SO_RCVBUF,SockBuffer(1),1048576)

但我还是丢失的数据。我该如何解决我的问题? 我正在使用recv函数来接收数据。应该改善吗?

更多的人,我需要做的UDP一个FIFO缓冲器。我能做些什么(算法或例子)?

回答

1

在你的问题,你似乎是在抱怨使用UDP和数据丢失。

如果使用的是UDP,你会丢失数据。避免丢失数据的方式是使用TCP,而不是UDP。如果您尝试使用用户数据报协议并为其添加可靠的数据传输,则最终会得到一些具有TCP的所有流量控制和数据窗口的内容......除非它不会像以前那样实施你要。

记住,“谁不明白TCP注定要重塑它....不好”

+0

你总是可以实现像TCP SYN/ACK系统,但较少的验证,因此被之间的中间地带TCP和UDP。但是如果问题是数据丢失,那可能是因为UDP,是的。 –

+0

谢谢,但我的服务器是电子板。它使用UDP,我不能更改 – kheo

+0

,我的电脑(运行我的程序 - 客户端)通过5米电缆直接连接到服务器,所以我认为它很难丢失数据。 – kheo