0

我已经设置了一个 TCP/IP 客户端/服务器连接,每次交换请求时都会打开和关闭连接。它完美地工作;客户端应用程序打开连接,发送请求并等待。服务器应用程序接收到请求产生响应并将其发送回并关闭连接。客户端和服务器应用程序会这样做数百次。

现在我正试图进行下一步:设置源 IP 地址和端口。

该代码应该可以在 Linux 和 Windows 上运行,所以 SO_BINDTODEVICE 是毫无疑问的,因为它只在 Linux/Unix 上受支持。

我试图在客户端套接字上绑定源端口和 ANYADRR。它起作用了……有一段时间了。最终它thorws错误10038。我在互联网上阅读了几篇文章,但没有明确的答案......源IP的选择仍然不清楚。

请注意,我在同一个库(无连接 UDP 通信模式)上还有一个单播和多播模式,一个发送者和接收者,我能够在多播模式下设置源端口/IP,单播我没有尝试然而。

无论如何,有人知道有什么可以帮助的吗?我正在使用 WinSock 2.2 并尝试尽可能多地独立于平台。

4

1 回答 1

0

Winsock 错误10038WSAENOTSOCK,这意味着您的代码中某处存在错误。您正在尝试使用SOCKET未指向有效套接字对象的句柄执行某些操作。bind()这与函数本身无关。您正在调用socket()但未检查其结果是否有错误,或者您正在尝试使用SOCKET已被您的应用程序关闭的句柄,或者您在某处出现内存溢出损坏了您的SOCKET句柄。

于 2012-07-27T23:23:39.743 回答