我的服务器使用UDP。获取后,它会自动向我的程序发送900bytes / 1ms。我在Windows中使用套接字API(VB 6)。我做了一个测试,我知道我的程序的消息处理时间(约0.3ms)比周期时间(1ms)短。所以原因应该是socket内部缓冲区。我尝试调用setsockopt函数来设置更大的缓冲区:
setsockopt(SockNum,SOL_SOCKET,SO_RCVBUF,SockBuffer(1),1048576)
但我仍然丢失了数据。我该如何解决我的问题? 我正在使用recv函数来接收数据。应该更好吗?
还有一个,我需要为UDP创建一个FIFO缓冲区。我该怎么做(算法或例子)?
答案 0 :(得分:1)
在您的问题中,您似乎在抱怨使用UDP并丢失数据。
如果您使用UDP,则会丢失数据。避免丢失数据的方法是使用TCP,而不是UDP。如果您尝试使用用户数据报协议并向其添加可靠的数据传送,您将最终获得具有TCP的所有流控制和数据窗口的内容......除非它不会像以前那样实现你想要的。
请记住,“那些不了解TCP的人注定要重新发明它......很糟糕”