如:
wVersionRequested = MAKEWORD( 3, 3 );
err = WSAStartup( wVersionRequested, &wsaData );为什么也是对的呐?
只有低版本才不行吗?
那这个函数有什么用呐?支持高的而不支持低的?不明白怎么会事,求解多谢
wVersionRequested = MAKEWORD( 3, 3 );
err = WSAStartup( wVersionRequested, &wsaData );为什么也是对的呐?
只有低版本才不行吗?
那这个函数有什么用呐?支持高的而不支持低的?不明白怎么会事,求解多谢
WSAStartup所采用的机制是“基于已有版本,尽可能满足客户要求”,所以,目前最高版本是2.0,当你请求3.3时,返回的应该就时2.0。
我们的应用程序通过WSAStartup来向WS2_32.DLL请求自己需要的Windows Socket版本。
如果请求的版本高于或等于WS2_32.DLL所支持的最低版本,则WSAStartup成功返回。
其中,wsaData结构体中的wHighVersion返回为WS2_32.DLL所支持的最高版本;
而另一成员wVersion则存放了WS2_32.DLL推荐该应用程序使用的Windows Socket版本。
成功返回后,WS2_32.DLL就"主观臆断"应用程序会以wVersion版本的规格来操作Windows Socket。
这样做主要是为了让WS2_32.DLL尽可能满足用户(应用程序)的需要。
所以一般来说,请求的版本号越大越不会出错,因为只要">="就成功返回。
WS2_32.DLL说:“虽然这里没有你要的,但是我已经把这里最好的给你了,你还想讨价还价?”
请求1.1反而出错可能是
之后的函数调用用的是winsock2.h中的函数?
你的系统最低支持版本已经大于1.1了?
或者其它?
我觉得应该是其他原因。
谢谢。