>  기사  >  백엔드 개발  >  WinSocket的几个WSA*_PHP教程

WinSocket的几个WSA*_PHP教程

WBOY
WBOY원래의
2016-07-12 09:05:571131검색

WinSocket的几个WSA*

  1. typedef struct WSAData {
  2. WORD wVersion;
  3. WORD wHighVersion;
  4. #ifdef _WIN64
  5. unsigned short iMaxSockets;
  6. unsigned short iMaxUdpDg;
  7. char FAR * lpVendorInfo;
  8. char szDescription[WSADESCRIPTION_LEN+1];
  9. char szSystemStatus[WSASYS_STATUS_LEN+1];
  10. #else
  11. char szDescription[WSADESCRIPTION_LEN+1];
  12. char szSystemStatus[WSASYS_STATUS_LEN+1];
  13. unsigned short iMaxSockets;
  14. unsigned short iMaxUdpDg;
  15. char FAR * lpVendorInfo;
  16. #endif
  17. } WSADATA;

WSADATA结构被用来储存调用AfxSocketInit全局函数返回的Windows Sockets初始化信息。


1、WSAStartup

用法:

WSADATA wsaD;
WSAStartup(MAKEWORD(2,2),&wsaD);

当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。

事实上,如果windows socket程序不加上这句,调用socket()函数是调用不成功的,一直返回-1。


2、WSACleanup

WSAStartup应该与WSACleanup成对使用,WSAStartup的功能是初始化Winsock DLL,WSACleanup是来解除与Socket库的绑定并且释放Socket库所占用的系统资源。

在Windows下,Socket是以DLL的形式实现的。在DLL内部维持着一个计数器,只有第一次调用WSAStartup才真正装载DLL,以后的 调用只是简单的增加计数器,而WSACleanup函数的功能则刚好相反,每调用一次使计数器减1,当计数器减到0时,DLL就从内存中被卸载!因此,你 调用了多少次WSAStartup,就应相应的调用多少次的WSACleanup.


3、WSAGetLastError()

是指该函数返回上次发生的网络错误。

待续......



参考网址:

http://blog.csdn.net/bolike/article/details/7584727

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1067478.htmlTechArticleWinSocket的几个WSA* typedef struct WSAData { WORD wVersion; WORD wHighVersion; #ifdef _WIN64 unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; char...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.