IP Helper ÊÇÒ»Ì×ÓÃÓÚ¹ÜÀí±¾µØÍøÂçÉèÖõÄAPI£¨Ó¦ÓóÌÐò±à³Ì½Ó¿Ú£©ËüµÄ¹¦ÄÜÊ®·ÖÇ¿´ó£¬Í¨¹ýʹÓÃÕâÒ»Ì×API£¬Äã¿ÉÒÔ·½±ãµÄ¸Ä±ä¼ÆËã»úµÄÍøÂçÉèÖûòÕßÌáÈ¡ÓйصÄÐÅÏ¢¡£¶øÇÒËü»¹ÌṩÁËÒ»ÖÖÏûÏ¢»úÖÆ£¬Äܹ»ÔÚ±¾µØ¼ÆËã»úµÄÍøÂçÉèÖ÷¢Éú¸Ä±äʱ֪ͨÄãµÄÓ¦ÓóÌÐò¡£Ò²¾ÍÊÇ˵ÒÔǰÉèÖÃIP£¬ÑÚÂëµÈµÈÁíÈËÄÑÒÔÈëÃßµÄÖÖÖÖ·³ËöµÄ¹¤×÷ÏÖÔÚ¶¼¿ÉÒÔÇáËɸ㶨ÁË¡£¶øÇÒʵ¼ÊÉÏ£¬Ëü²»½ö½öÄܹ»ÌáÈ¡±¾»úµÄÍøÂçÉèÖÃÐÅÏ¢£¬»¹Äܹ»»ñµÃÍøÂçÉÏÆäËü¼ÆËã»úµÄIPʹÓÃÇé¿öºÍMACµØÖ·¡£ÕâÕýÊǺóÃæÁíһƪÎÄÕµÄÀý×Ó³ÌÐòÖÐҪʹÓõŦÄÜ¡£ÄĶù¿ÉÒԸ㵽IP Helper API?Windows 98ÒÔÉϵÄËùÓвÙ×÷ϵͳÔÚϵͳĿ¼µÄsystem32϶¼´øÓÐiphlpapi.dllÕâ¸ö¿âÎļþ£¬¶øÇÒ¶ÔÓÚNT 4.0ÔÚ¼Ó×°ÁËService Pack 2ÒÔºóÒ²¾ÍÓÐÁËÕâ¸ö¿âÎļþ¡£ÕâÖ»ÄÜ˵Ã÷ÎÒÃǵijÌÐò¿ÉÒÔÔÚÕâЩϵͳÉÏÔËÐжø²»ÐèÒª¶îÍâµÄ¿âÎļþ£¬µ«ÊǶÔÓÚC³ÌÐòÔ±À´Ëµ»¹±ØÐëÓÐÏàÓ¦µÄÍ·ÎļþµÈµÈ¶«Î÷¡£Õâ¸ö¶«¶«ÍøÉϲ»Ì«¶à£¬ÔÚ»ªÖÐÀí¹¤ºÍÇ廪9#µÄFTPÉÏÓÐËüµÄÍ·Îļþ£¬ÎļþºÜС£¬Ö»Óм¸K£¨Í·Îļþ¶øÒÑ£¬´ó²»µ½ÄĶùÈ¥£©¡£µ±È»£¬ÄãÒ²¿ÉÒÔÎÊ΢ÈíÒª£¬ÏÂÔØSDK»òÕßÊǶ¨¹ºSDK¹âÅÌ£¨ÕâÊÇÎÒÃÎÏëµÄÊÂÇ飩¡£×îºóÊǶÔMSDNµÄÒ»¸ö¿±Îó£ºMSDNËùÉù³ÆµÄ¾²Ì¬Á´½Ó¿âiphlpapi.libÊDz»´æÔڵģ¨ÖÁÉÙÎÒûÓÐÕÒµ½£©£¬»¹ÊÇÀÏÀÏʵʵµÄʹÓö¯Ì¬¿â°É¡£ ´Ó×î¼òµ¥µÄ¿ªÊ¼×î¼òµ¥µÄµ±È»ÊÇ¿´¿´ÎÒÃǼÆËã»úÉϵÄÍøÂçÉèÖÃÊÇʲô¶ø²»Òª¶¯ÊÖÐ޸ġ£¸½±íÖÐÁгöÁËÒ»¸ö¼òµ¥µÄÍøÂçÉèÖò鿴³ÌÐò£¬ÔÚÕâ¸ö³ÌÐòÖÐÎÒ·ÖÀàʹÓÃÁËÖ÷ÒªµÄAPIº¯Êý£¬ÎªÁ˽»´úÎÊÌâ¶ø²»ÈÃÄãÏÝÈëµ½MFCµÄÍôÑó´óº£ÖÐÈ¥£¬ÎÒ°ÑËü×ö³ÉÁË¿ØÖÆÌ¨½çÃæµÄ£¬¶øÇÒ×öÁËÏ꾡µÄ×¢ÊÍ£¬Äã¿ÉÒÔ°ÑÆäÖеĴúÂë¼ôÇÐÕ³ÌùÏÂÀ´ÔÚÈκεط½Ê¹Óá£ÈÃÎÒÀ´½âÊÍÒ»ÏÂÕâЩ´úÂ룺 ÌáÈ¡Íø¿¨ÐÅÏ¢ hInst=LoadLibrary("iphlpapi.dll"); if(!hInst) cout<<"iphlpapi.dll not supported in this platform!\n"; ÕâÈýÐдúÂëµÄ×÷ÓÃÊǼÓÔØiphlpapi¿âÎļþ£¬ÔÚ¼«¸ö±ðµÄÇé¿öÏ£¬ÄãʹÓÃÁËwin95ÒÔϵIJÙ×÷ϵͳ»òÕß²»Ð¡ÐÄɾ³ýÁËiphlpapi.dll£¬µÚÈýÐеÄÓï¾ä²Å»á±»´òÓ¡³öÀ´£¬ÕâÒ²ÊdzÌÐòʧ°ÜµÄΨһÔÒò¡£ Ï£ÍûÄ㻹¼ÇµÃÈçºÎʹÓÃ.dll¡£³¤¾ÃÒÔÀ´ÎÒÃÇÒ»Ö±¶¼ÔÚÐÒ¸£µÄʹÓÃ×ÅVCµÄ¾²Ì¬Á´½Ó¿â£¬ÔÚûÓо²Ì¬Á´½Ó¿âµÄÇé¿öÏÂÎÒÃÇ»¹ÓÐɵ¹Ï»¯µÄ¿Ø¼þ¡£ÏÂÃæµÄ¼¸ÐдúÂëÏÔʾÁ˵÷ÓÃDLLÖк¯ÊýµÄ¹ý³Ì£º pGAInfo=(PGAINFO)GetProcAddress(hInst,"GetAdaptersInfo"); ULONG ulSize=0; pGAInfo(pInfo,&ulSize); pInfo=(PIP_ADAPTER_INFO)new(char[ulSize]); pGAInfo(pInfo,&ulSize); µÚÒ»ÐдúÂëÊÇ»ñµÃº¯ÊýGetAdaptersInfoµÄÈë¿ÚµØÖ·£¬ÒÔ±ãÎÒÃÇÔÚºóÃæÍ¨¹ýÖ¸Õëµ÷Óú¯Êý¡£Õâ¸öº¯ÊýµÄ¹¦ÄÜÊÇÌáÈ¡Íø¿¨µÄÐÅÏ¢£¬²¢½ÓÊÕÁ½¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊýÊÇÓÃÀ´±£´æÍø¿¨ÐÅÏ¢µÄÄڴ滺³åµÄÊ×µØÖ·£¬¶øµÚ¶þ¸ö²ÎÊýÊÇÕâ¸ö»º³åµÄ´óС¡£µ«ÉÏÃæµÄ´úÂë¿´ÆðÀ´ÓÐÐ©Ææ¹Ö¶Ôô£¿ÓÉÓÚÎÒÃÇÊÂÏȲ»ÖªµÀ±¾µØ»úÆ÷ÉÏÓжàÉÙÕÅÍø¿¨£¬ËùÒÔÒ²¾Íû·¨ÖªµÀÓ¦¸Ã·ÖÅä¶à´óµÄ»º´æ¡£ºÃÔÚGetAdaptersInfoº¯ÊýÔÚ»º³åµÄ´óС²»¹»Ê±»áÔÚµÚ¶þ¸ö²ÎÊýÒ²¾ÍÊÇulSizeÖÐÌîÈëÓ¦¸Ã·ÖÅäµÄ»º³åµÄ´óС¡£ÕâÑù£¬ÎÒÃǾͿÉÒÔµ÷ÓÃÁ½´ÎGetAdaptersInfo£¬µÚÒ»´ÎÊÇ»ñÈ¡»º³åÇøµÄ´óС£¬È»ºó·ÖÅäÕâ¸ö»º³åÒÔºóÔٴε÷ÓÃËüÒÔ»ñµÃʵ¼ÊµÄÍø¿¨ÐÅÏ¢¡£ ÁîÈ˲»½âµÄÊÇ£¬GetAdaptersInfoͨ¹ýpInfo·µ»ØµÄÐÅÏ¢¾¹È»ÊÇÒÔ¾²Ì¬Á´±íµÄ·½Ê½×éÖ¯µÄ£¬ÏÂÃæ¾ÍÊÇ·ÃÎÊÁ´±íµÄ´úÂ룺 while(pInfo) { ¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£//·ÃÎÊÍø¿¨Êý¾Ý //½«µ±Ç°Ö¸ÕëÒÆÏòÏÂÒ»¸ö½áµã pInfo=pInfo->Next; } ΪÁË˵Ã÷ÎÊÌ⣬ÎÒÔÙÒ»´ÎÊ¡ÂÔÁËÆäÖеĴúÂë¡£ÏÂÃæ¿´¿´GetAdaptersInfo¶¼·µ»ØÁËЩʲôÑùµÄÐÅÏ¢£¬ÏÂÃæÊǶÔpInfoËùÖ¸ÏòµÄÊý¾Ý½á¹¹µÄ½âÊÍ£º typedef struct _IP_ADAPTER_INFO { struct _IP_ADAPTER_INFO* Next; //Á´±íÖ¸ÕëÓò£¬ÎÒÃÇͨ¹ýÕâ¸öÀ´±éÀú¾²Ì¬¼ü±í DWORD ComboIndex;//±£ÁôδÓà char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]; //Íø¿¨Ãû char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]; //¶ÔÍø¿¨µÄÃèÊö£¬Êµ¼ÊÉϺÃÏóÊÇ//Çý¶¯³ÌÐòµÄÃû×Ö UINT AddressLength; //ÎïÀíµØÖ·µÄ³¤¶È£¬Í¨¹ýÕâ¸öÎÒÃDzÅÄÜÕýÈ·µÄÏÔʾÏÂÃæÊý×éÖеÄÎïÀíµØ //Ö· BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; //ÎïÀíµØÖ·£¬Ã¿¸ö×Ö½Ú´æ·ÅÒ»¸öÊ®Áù½øÖƵÄÊý //Öµ£¬ÎÒÃÇÅäºÏÉÏÒ»¸öÊý¾ÝÓòÔÚprintfÖÐÓÃ/x¸ñʽ°Ñÿ¸ö×Ö½ÚÊä³ö¡£ DWORD Index;//Íø¿¨Ë÷ÒýºÅ UINT Type;//Íø¿¨ÀàÐÍ UINT DhcpEnabled;//ÊÇ·ñÆôÓÃÁËDHCP¶¯Ì¬IP·ÖÅ䣿 PIP_ADDR_STRING CurrentIpAddress;//µ±Ç°Ê¹ÓõÄIPµØÖ· IP_ADDR_STRING IpAddressList; //°ó¶¨µ½´ËÍø¿¨µÄIPµØÖ·Á´±í£¬ÖØÒªÏîÄ¿ IP_ADDR_STRING GatewayList; //Íø¹ØµØÖ·Á´±í£¬ÖØÒªÏîÄ¿ IP_ADDR_STRING DhcpServer; //DHCP·þÎñÆ÷µØÖ·£¬Ö»ÓÐÔÚDhcpEnabled==TRUEµÄÇé¿öϲÅÓÐ //Ч BOOL HaveWins;//ÊÇ·ñÆôÓÃÁËWINS? IP_ADDR_STRING PrimaryWinsServer; //Ö÷WINSµØÖ· IP_ADDR_STRING SecondaryWinsServer; //¸¨WINSµØÖ· time_t LeaseObtained; //µ±Ç°DHCP×â½è»ñÈ¡µÄʱ¼ä time_t LeaseExpires; //µ±Ç°DHCP×â½èʧЧʱ¼ä¡£ÕâÁ½¸öÊý¾Ý½á¹¹Ö»ÓÐÔÚÆôÓÃÁËDHCPʱ²Å //ÓÐÓᣠ} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO; ÏÖÔÚÓ¦¸Ã¿ÉÒÔ¿´¶®Õâ¸ö³ÌÐòÁ˰ɡ£»¹±ØÐë¸æËßÄãµÄÊÇÕâ¸öÊý¾Ý½á¹¹ÖеöIPµØÖ·×Ö·û´®IpAddressList¡¢GatewayListµÈµÈ¶¼ÊÇÒÔÁ´±íµÄ·½Ê½×éÖ¯µÄ£¨Î¢ÈíÆ«ºÃÁ´±í£¿£©¡£Õâ¾ÍÊÇΪʲôÎҵijÌÐòÀïÃæ³äÂúÁËÑ»·¡£Êµ¼ÊÉÏÄã¿´µ½µÄËùÓÐÊý¾Ý¶¼¿ÉÒÔÔÚ¿ØÖÆÃæ°å|ÍøÂç|ÊôÐÔ|TCP/IPµÄÊôÐÔÒ³µÄ¸ß¼¶Ñ¡ÏîÀï¿´¼û¡£ ÌáÈ¡ÍøÂç½Ó¿ÚÐÅÏ¢ÆäÖÐ×îÖ÷ÒªµÄÁ½¸öº¯ÊýÊÇGetNumberOfInterfacesºÍGetInterfaceInfo£¬Ç°ÕßÖ¸³öÍøÂç½Ó¿ÚµÄ¸öÊý£¬ºóÕßÌáÈ¡ÍøÂç½Ó¿ÚµÄÐÅÏ¢¡£¶ÔÓÚµÚÒ»¸öº¯ÊýҪ˵Ã÷µÄÒ»µãÊÇËüºÃÏó²¢Ã»Óзµ»ØÕýÈ·µÄÖµ£¬ÒòΪ¾ÝMSDNÃèÊö£ºÒ»¸öÍøÂç½Ó¿ÚÊÇÍø¿¨µÄÂß¼³éÏó£¬ËüÃÇÊÇÒ»¶ÔÒ»µÄ¹ØÏµ¡£¶øÊµ¼ÊÇé¿öÊÇÎҵĻúÆ÷ÉÏÖ»ÓÐÒ»ÕÅÍø¿¨£¬Õâ¸öº¯ÊýÈ´·µ»ØÁË2¡£Êµ¼ÊÉÏ£¬ÒòΪÿ¸öϵͳ¶¼¸½¼ÓÓÐÒ»¸öµ÷ÊÔÓõÄÍøÂç½Ó¿Ú£¬Õâ¸ö½Ó¿ÚµÄIPµØÖ·ÊÇ127.0.0.1×ÓÍøÑÚÂëÊÇ255.0.0.0¡£Õâ¸ö½á¹û¿ÉÒÔ´Ó³ÌÐòµÄÊä³ö¿´³öÀ´¡£ÓÉGetInterfaceInfo·µ»ØµÄIP_INTERFACE_INFO½á¹¹ÖÐÒ²ÓÐÒ»¸öNumAdaptersÕûÐ͵ÄÊý¾ÝÓò¼Ç¼ÁËÕýÈ·µÄÍø¿¨¡£È»ºó¶ÔÓÚGetInterfaceInfoҪעÒâµÄÊÇËüÒ²±ØÐë±»µ÷ÓÃÁ½´Î£¬µÚÒ»´Î»ñÈ¡»º³å´óС£¬µÚ¶þ´Î²ÅÊÇȡֵ¡£È»ºóÔÙ´ÎÈÃÎҸе½Æä¹ÖµÄÊÇGetInterfaceInfo·µ»ØµÄIP_INTERFACE_INFO²»ÏóÉÏÃæµÄ½á¹¹ÊÇÓÃÁ´±í£¬¶øÊÇÓõĶ¯Ì¬Êý×éµÄ·½·¨£¨µ½ÏÖÔÚʲôÏßÐԽṹ¶¼ÓÃÉÏÁË£©£¬ËùÒÔ±éÀúÆäÖÐÿһ¸öÔªËØµÄ´úÂë±ä³É£º for(int i=0;iNumAdapters;i++) { cout<<"Adapter index:"<Adapter[i].Index<Adapter[i].Name< IP_INTERFACE_INFO½á¹¹µÄ½âÊÍÈçÏ£º typedef struct _IP_INTERFACE_INFO { LONG NumAdapters; // ¶¯Ì¬Êý×éÖÐÍøÂç½Ó¿ÚÔªËØµÄ¸öÊý£¬Í¨¹ýËüÀ´±éÀúÊý //×é IP_ADAPTER_INDEX_MAP Adapter[1]; // ÍøÂç½Ó¿ÚÊý¾ÝÊý×é } IP_INTERFACE_INFO,*PIP_INTERFACE_INFO; ÆäÖеÄIP_ADAPTER_INDEX_MAP½á¹¹ÈçÏ£º typedef struct _IP_ADAPTER_INDEX_MAP { ULONG Index; // Íø¿¨Ë÷Òý WCHAR Name[MAX_ADAPTER_NAME]; // Íø¿¨Ãû } IP_ADAPTER_INDEX_MAP, * PIP_ADAPTER_INDEX_MAP; ÌáÈ¡IPÐÅÏ¢ Õⲿ·ÖÏÔÈ»ºÍÌáÈ¡ÍøÂç½Ó¿ÚÐÅÏ¢²¿·ÖÊÇÏàͬµÄ¡£ ÉèÖñ¾µØÍøÂç ÉèÖõĹý³ÌÓëÌáÈ¡¹ý³ÌÆäʵÊÇ»»ÌÀ²»»»Ò©¡£ÎÒ²»ÏëÔÚÕâÀïÑÝʾÿһ¸öº¯ÊýµÄÓ÷¨£¬ËùÒÔֻʹÓÃÁËÒ»¸ö£¨ÎÒÈÏΪ£©×î³£Óõĺ¯ÊýAddIPAddress¡£Õâ¸öº¯ÊýÄܹ»ÉèÖñ¾µØÍøÂçµÄIP¡£µ«²»ÐÒµÄÊÇ£¬Õâ¸öIPÊÇÁÙʱµÄ£¬µ±ÏµÍ³ÖØÐÂÆô¶¯»òÕß·¢ÉúÆäËüµÄPNPʼþµÄʱºòÕâ¸öIP¾Í²»´æÔÚÁË¡£ÄÇôÓÐÈË»áÎÊÕâÓÐʲôÓÃÄØ£¿Êµ¼ÊÉÏ£¬Ã¿¸öÍøÂç½Ó¿Ú¿¨¶¼¿ÉÒ԰󶨶à¸öIP£¬ËùÒÔÔÚÍøÂç»·¾³¶ñÁÓµÄÇé¿öÏ£¨ÈçÐ£Ô°Íø£©Í¬Ê±Ô¤±¸¶à¸öIPÒÔ·À¶ÏÏßÊÇÓбØÒªµÄ¡£±ØÐëÖ¸³öµÄÊÇÕâÖÖÁÙʱµÄIPÔÚÍøÂçͨѶʱ¿ÉÄܵ¼ÖµÄÎÊÌâÏÖÔÚ»¹Ã»ÓвâÊÔ¹ý£¬ÖîÈçCODEGURU£¬CSDN£¬MSDN£¬»òÕßTECHREPUBLIC¶ÔÕâÌ×APIҲûÓÐÏêϸµÄ½âÊÍ£¨ËäÈ»ËüºÜÓÐÓã©¡£ ÆäËüµÄAPIº¯Êý ÕâЩº¯ÊýÄܹ»ÈÃÄã²ì¿´»òÕßÉèÖÃÍøÂçÊý¾Ý±¨ÎÄ·½ÃæµÄÐÅÏ¢¡£±È·½GetIpStatistics¡¢GetIcmpStatisticsº¯ÊýÄܹ»ÈÃÄã²é¿´µ±Ç°IPÊý¾Ý±¨ºÍICMPÊý¾Ý±¨µÄÁ÷Á¿£¬ÒÔ¼°·ÏÆúµÄÊý¾Ý±¨ÊýÁ¿µÈµÈ¡£Ê¹ÓÃÕâЩº¯ÊýÄã¿ÉÒÔ¹¹½¨×Ô¼ºµÄÍøÂç¼à¿Ø³ÌÐò¼ì²ìÍøÂçÖеĹÊÕÏ¡£ÄãÒ²¿ÉÒÔʹÓÃSetIpStatistics º¯ÊýÀ´ÉèÖÃÏàÓ¦µÄIPÐÒéÕ»ÊôÐÔ£¬Ëõ¶Ì»òÕßÑÓ³¤IPÊý¾Ý±¨µÄȱʡTTLÖµ¡£È»ºóÄãÒ²¿ÉÒÔʹÓÃGetIpForwardTable¡¢CreateIpForwardEntry ¡¢DeleteIpForwardEntry¡¢SetIpForwardEntryÀ´·Ö±ð»ñÈ¡IP·ÓɱíµÄÐÅÏ¢£¬´´½¨Â·ÓɱíÏɾ³ý·ÓɱíÏîºÍÐ޸ķÓɱíÏî¡£Ò²¿ÉÒÔÓÃGetBestRoute¡¢ GetBestInterface»ñµÃµ½´ïÖ¸¶¨IPµÄ×îºÃµÄ·ÓɵãºÍÍøÂç½Ó¿Ú¡£ ÊÂʵÉÏ£¬Í¨¹ýÕâЩº¯ÊýÎÒÃÇ¿ÉÒԵõ½Ðí¶àMIB±äÁ¿£¨¡¶Ê¹ÓÃTCP/IPÐÒéʵÏÖÍø¼Ê»¥Áª¡·µÚ¶þ¾í£©£¬Í¨¹ýÕâЩMIB±äÁ¿£¬ÎÒÃÇ¿ÉÒԷdz£¿ìËÙµÄÖÆ×÷Ò»¸öÍøÂç¹ÜÀíÈí¼þ¡£ Î´Éæ¼°µÄ²¿·Ö ÎÒÃÇûÓÐÉæ¼°IP Helper APIÖÐSendARPº¯ÊýµÄʹÓá£Êµ¼ÊÉÏ£¬Õâ¸öº¯ÊýÊÇÎÒʹÓÃÕâÌ×APIµÄÖ÷ÒªÔÒò£¬ËüÄܹ»¼òµ¥µÄ·¢ËÍARPÊý¾Ý°ü²¢·µ»ØÄ¿±ê»úÆ÷µÄMACµØÖ·¡£ÎÒʹÓÃÕâ¸öº¯ÊýÖÆ×÷ÁËÁíÒ»¸ö¼òµ¥µÄIP²é¿´³ÌÐò£¬ËüÄܹ»²é¿´¾ÖÓòÍøÉÏÄÄЩIPÕýÔÚʹÓ㬲¢Äܹ»ÏÔʾËüÃǵÄMACµØÖ·¡£Èç¹û°ÑÕâЩÐÅÏ¢¼Ç¼ÔÚÎļþÖУ¬ÎҾͿÉÒÔͳ¼Æ³öÒ»ÌìÖÐÄÄЩ¼Ò»ïµÄÉÏÍøÊ±¼ä×ÒÔ¼°ÆäÉÏÍøµÄϰÐÔ²¢Äܹ»ÖªµÀÄÄЩÈ˸ü»»ÁËËûÃǵÄÍø¿¨£¬Ò²¿ÉÒÔ·ÖÎö³öÕâ¸öÍøÂçµÄʹÓÃÇé¿ö(ÎÒÔÚѧУµÄ¸ß·åʱ¶Îͳ¼Æ³öÒ»¸öÍø¶ÎµÄ254¸öIPÖо¹ÓÐ236¸öÕýÔÚʹÓ㬿ɼûÔö¼ÓÍø¶ÎµÄ±ØÒªÁË)¡£ÎÒ½«ÔÚºóÃæµÄÎÄÕÂÖÐ˵Ã÷Õâ¸ö³ÌÐòµÄÖÆ×÷¡£ÎÒÃÇҲûÓÐÉæ¼°ÕâÌ×APIÌṩµÄµ±ÍøÂçÉèÖøıäʱÏòÓ¦ÓóÌÐò·¢³öÏûÏ¢µÄÒ첽֪ͨ¹¦ÄÜ¡£ÒòΪËüÃǷdz£¼òµ¥£¬ÓëWINSOCKÖÐWSAAsyncSelectµÄʹÓ÷½·¨ÊÇÒ»ÑùµÄ£¬¾Í²»ÔÙ˵Ã÷ÁË¡£ ºó»° ÌÖÂÛÈçºÎʹÓÃAPIº¯ÊýÒ²Ðí»á±»Ò»Åú"´¿´â"µÄ³ÌÐòÔ±Ëù±ÉÊÓ¡£µ«Ã¿´Î¿´µ½ÓÐÈËÔÚÂÛ̳Éϼ±ÇеÄѯÎÊÈçºÎÈ¡µÃ±¾»úÍø¹Ø£¬IPµØÖ·£¬Â·ÓÉÖ®ÀàµÄÐÅÏ¢µÄʱºò£¬ÎҾ;õµÃ·Ç³£ÓбØÒª½éÉÜÕâÒ»Ì×APIº¯Êý£¬ËüÄܹ»£¨ÖÁÉÙÔÚÎÒ¿´À´£©Âú×ãÎÒÃǵĴ󲿷ÖÒªÇó  |