⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asyncdns.cpp

📁 nsis是一个流传比较广的程序安装和解安装封装软件
💻 CPP
字号:
/*** JNetLib** Copyright (C) 2000-2001 Nullsoft, Inc.** Author: Justin Frankel** File: asyncdns.cpp - JNL portable asynchronous DNS implementation** License: see jnetlib.h*/#include "netinc.h"#include "util.h"#include "asyncdns.h"JNL_AsyncDNS::JNL_AsyncDNS(int max_cache_entries){  m_thread_kill=1;  m_thread=0;  m_addr=0;  m_hostname[0]=0;}JNL_AsyncDNS::~JNL_AsyncDNS(){  m_thread_kill=1;  if (m_thread)  {    WaitForSingleObject(m_thread,INFINITE);    CloseHandle(m_thread);  }}DWORD WINAPI JNL_AsyncDNS::_threadfunc(LPVOID _d){  JNL_AsyncDNS *_this=(JNL_AsyncDNS*)_d;  int nowinsock=JNL::open_socketlib();  struct hostent *hostentry;  hostentry=::gethostbyname(_this->m_hostname);  if (hostentry)  {    _this->m_addr=*((int*)hostentry->h_addr);  }  else    _this->m_addr=INADDR_NONE;  if (!nowinsock) JNL::close_socketlib();  _this->m_thread_kill=1;  return 0;}int JNL_AsyncDNS::resolve(char *hostname, unsigned long *addr){  // return 0 on success, 1 on wait, -1 on unresolvable  unsigned long ip=inet_addr(hostname);  if (ip != INADDR_NONE)   {    *addr=ip;    return 0;  }  if (lstrcmpi(m_hostname,hostname)) m_addr=0;  else if (m_addr == INADDR_NONE) return -1;  else if (m_addr)  {    *addr=m_addr;    return 0;  }  lstrcpy(m_hostname,hostname);  if (m_thread_kill)  {    DWORD id;    if (m_thread) return -1;    m_thread_kill=0;    m_thread=CreateThread(NULL,0,_threadfunc,(LPVOID)this,0,&id);    if (!m_thread) return -1;  }  return 1;}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -