我已经设置了TCP / IP客户端/服务器连接,每次交换请求时都会打开和关闭连接。它完美地运作;客户端应用程序打开连接,发送请求并等待。服务器应用程序接收请求产生响应并将其发回并关闭连接。 Cient和服务器应用程序可以完成数百次。
现在我正在尝试进行下一步:设置源IP地址和端口。
该代码应该适用于Linux和Windows,因此SO_BINDTODEVICE是不可能的,因为它仅在Linux / Unix上受支持。
我尝试在客户端套接字上绑定源端口和ANYADRR。它有效......有一段时间了。最终它出现了错误10038.我已经在互联网上阅读了几篇文章,但没有明确答案......源IP的选择仍不清楚。
请注意,我在同一个库(无连接UDP通信模式)上有一个UNICAST和MULTICAST模式,一个发送器和接收器,我能够在MULTICAST模式下设置源端口/ IP,UNICAST我没有试试吧。
无论如何,任何人都知道任何有用的东西吗?我正在使用WinSock 2.2并试图尽可能多地使用平台。
答案 0 :(得分:0)
Winsock错误10038
是WSAENOTSOCK
,这意味着您的代码中存在错误。您正在尝试使用未指向有效套接字对象的SOCKET
句柄执行某些操作。这与bind()
函数本身无关。您要么调用socket()
而不是检查其结果是否有错误,要么您正在尝试使用已被应用程序关闭的SOCKET
句柄,或者您的内存溢出某处正在破坏你的SOCKET
句柄。