对于我的 Uni 任务,我必须创建一个快节奏的网络游戏,因此选择使用 UDP 而不是 TCP。我知道 UDP 和 TCP 编程的许多不同之处,并且通读了 MSDN 关于 winsock 的文档的大部分相关部分。在 MSDN 上,它声明通过 connect() 函数创建 UDP 套接字应该将套接字绑定到指定的地址和端口,因此能够将 send() 和 recv() 函数与创建的套接字一起使用。
对于我的应用程序,我创建了一个客户端并使用环回地址使用 connect(),该环回地址通过 send() 函数发送多个数据包。客户端在调用 select() 之后,会收到它发出的数据包。但是,我从 recv() 函数得到的结果是 SOCKET_ERROR,使用 WSAGetLastError() 的错误描述是“现有连接被远程主机强行关闭”。
如果我使用bind()函数并使用sendto()通过环回地址发送数据,我recv()数据包没有任何错误......有谁知道为什么connect()函数没有做它应该做的事情,有没有人能够使用带有 connect() 函数的 UDP 套接字?