对于我的Uni任务,我必须创建一个快节奏的网络游戏,因此选择使用UDP而不是TCP.我知道在UDP和TCP编程方面存在很多差异,并且已经阅读了关于winsock的MSDN文档的大部分相关部分.在MSDN上,它声明通过connect()函数创建UDP套接字应该将套接字绑定到指定的地址和端口,因此可以使用send()和recv()函数与创建的套接字.
对于我的应用程序,我创建一个客户端并使用loopback地址使用connect(),该地址通过send()函数发送大量数据包.客户端在调用select()之后,然后接收它发出的数据包.但是我从recv()函数得到的结果是SOCKET_ERROR,使用WSAGetLastError()的错误描述是"现有连接被远程主机强行关闭".
如果我使用bind()函数并使用sendto()通过环回地址发送数据,我recv()数据包没有任何错误...有谁知道为什么connect()函数没有做它应该做的事情,有没有人能够使用UDP套接字与connect()函数?
Jer*_*ner 14
如果希望程序接收UDP数据包,则需要调用bind().connect()仅设置在调用send()时套接字将发送数据包的地址; 它不会将套接字与要接收的本地UDP端口相关联; 为此你必须调用bind().