我正在使用 SFML 编写网络程序,据我了解,UDP 套接字完全无连接
当我尝试从我的套接字读取时,我得到一个“断开连接”错误代码,但文档似乎没有提到 UDP 套接字能够返回这种错误(只有 TCP 能够返回)
断开连接的 UDP 套接字可能意味着什么?
最佳答案
虽然 UDP 作为一种协议(protocol)是“无连接的”,但套接字 API 支持虚拟连接以允许面向连接的功能继续工作。当您调用 connect
在 UDP 套接字上,操作系统会像往常一样记住您设置的连接数据,并过滤与虚拟连接不一致的内容,这允许您使用像 recv
这样的接口(interface), send
和 getpeername
因为对等体是隐含的。如果不使用connect,则需要使用sendmsg
等接口(interface). sendto
, recvmsg
和 recvfrom
对等点基于每个数据包进行通信。
在 SFML 的情况下,它不一定使用需要连接的东西,但它会将其他错误(例如超时)重新映射到 Disconnected。 .
关于sockets - SFML 套接字,返回 "Disconnected"的 UDP 套接字是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65508943/