api - UDP 使用套接字 API

标签 api vb6 sockets udp

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

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

但我仍然丢失了数据。我该如何解决我的问题?
我正在使用 recv接收数据的功能。应该 recvfrom会更好?

此外,我需要为 UDP 创建一个 FIFO 缓冲区。我怎么能这样做(即算法或示例)?

最佳答案

在您的问题中,您似乎在提示使用 UDP 并丢失数据。

如果您使用 UDP,您将丢失数据。避免丢失数据的方法是使用 TCP,而不是 UDP。如果您尝试采用用户数据报协议(protocol)并向其添加可靠的数据传递,您最终将得到具有 TCP 的所有流控制和数据窗口的东西......除了它不会被实现以及你要。

请记住,“那些不了解 TCP 的人注定要重新发明它……糟糕”

关于api - UDP 使用套接字 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085060/

相关文章:

Python 套接字选择.选择。使用对象列表而不是连接

api - 自定义 channel 播放列表与 Xtream 代码中的服务器同步

java - 用于 Java 的 ASC Visual Basic

xml - 在 VB6 中检索 WinHttpReq.ResponseBody 跳过的热链接页面数据的最佳方法

vb6 - 将 VB6 TreeView 中的节点设置为斜体

c - sendto 函数出错

c++ - 识别服务器的别名

iOS 奇迹 API : How to get all Characters

api - TLS sslv3 握手错误

java - 根据预定义的 API 限制对类和方法的访问