亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dns.cpp

?? 很好用的網絡封裝庫,不熟悉網絡編程的人也可以使用。使用風格良好的標準c++編寫。
?? CPP
字號:
//
// DNS.cpp
//
// $Id: //poco/1.3/Net/src/DNS.cpp#1 $
//
// Library: Net
// Package: NetCore
// Module:  DNS
//
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// Permission is hereby granted, free of charge, to any person or organization
// obtaining a copy of the software and accompanying documentation covered by
// this license (the "Software") to use, reproduce, display, distribute,
// execute, and transmit the Software, and to prepare derivative works of the
// Software, and to permit third-parties to whom the Software is furnished to
// do so, all subject to the following:
// 
// The copyright notices in the Software and this entire statement, including
// the above license grant, this restriction and the following disclaimer,
// must be included in all copies of the Software, in whole or in part, and
// all derivative works of the Software, unless such copies or derivative
// works are solely in the form of machine-executable object code generated by
// a source language processor.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//


#include "Poco/Net/DNS.h"
#include "Poco/Net/NetException.h"
#include "Poco/Net/SocketAddress.h"
#include "Poco/Environment.h"
#include "Poco/NumberFormatter.h"


using Poco::FastMutex;
using Poco::Environment;
using Poco::NumberFormatter;
using Poco::IOException;


//
// Automatic initialization of Windows networking
//
#if defined(_WIN32)
namespace
{
	class NetworkInitializer
	{
	public:
		NetworkInitializer()
		{
			WORD    version = MAKEWORD(2, 2);
			WSADATA data;
			WSAStartup(version, &data);
		}
		
		~NetworkInitializer()
		{
			WSACleanup();
		}
	};
	
	static NetworkInitializer networkInitializer;
}
#endif // _WIN32


namespace Poco {
namespace Net {


DNS::DNSCache DNS::_cache;
Poco::FastMutex DNS::_mutex;


const HostEntry& DNS::hostByName(const std::string& hostname)
{
	FastMutex::ScopedLock lock(_mutex);
	
	DNSCache::const_iterator it = _cache.find(hostname);
	if (it != _cache.end())
	{
		return it->second;
	}
	else
	{
#if defined(_WIN32) && defined(POCO_HAVE_IPv6)
		struct addrinfo* pAI;
		struct addrinfo hints;
		memset(&hints, 0, sizeof(hints));
		hints.ai_flags = AI_CANONNAME;
		if (getaddrinfo(hostname.c_str(), NULL, &hints, &pAI) == 0)
		{
			std::pair<DNSCache::iterator, bool> res = _cache.insert(std::pair<std::string, HostEntry>(hostname, HostEntry(pAI)));
			freeaddrinfo(pAI);
			return res.first->second;
		}
#else
		struct hostent* he = gethostbyname(hostname.c_str());
		if (he)
		{
			std::pair<DNSCache::iterator, bool> res = _cache.insert(std::pair<std::string, HostEntry>(hostname, HostEntry(he)));
			return res.first->second;
		}
#endif
	}
	error(lastError(), hostname);      // will throw an appropriate exception
	throw NetException(); // to silence compiler
}


const HostEntry& DNS::hostByAddress(const IPAddress& address)
{
	FastMutex::ScopedLock lock(_mutex);

#if defined(_WIN32) && defined(POCO_HAVE_IPv6)
	SocketAddress sa(address, 0);
	static char fqname[1024];
	if (getnameinfo(sa.addr(), sa.length(), fqname, sizeof(fqname), NULL, 0, 0) == 0)
	{
		DNSCache::const_iterator it = _cache.find(std::string(fqname));
		if (it != _cache.end())
		{
			return it->second;
		}
		else
		{
			struct addrinfo* pAI;
			struct addrinfo hints;
			memset(&hints, 0, sizeof(hints));
			if (getaddrinfo(fqname, NULL, &hints, &pAI) == 0)
			{
				std::pair<DNSCache::iterator, bool> res = _cache.insert(std::pair<std::string, HostEntry>(std::string(fqname), HostEntry(pAI)));
				freeaddrinfo(pAI);
				return res.first->second;
			}
		}
	}
#else
	struct hostent* he = gethostbyaddr(reinterpret_cast<const char*>(address.addr()), address.length(), address.af());
	if (he)
	{
		std::pair<DNSCache::iterator, bool> res = _cache.insert(std::pair<std::string, HostEntry>(std::string(he->h_name), HostEntry(he)));
		return res.first->second;
	}
#endif
	error(lastError(), address.toString());      // will throw an appropriate exception
	throw NetException(); // to silence compiler
}


const HostEntry& DNS::resolve(const std::string& address)
{
	IPAddress ip;
	if (IPAddress::tryParse(address, ip))
		return hostByAddress(ip);
	else
		return hostByName(address);
}


IPAddress DNS::resolveOne(const std::string& address)
{
	const HostEntry& entry = resolve(address);
	if (!entry.addresses().empty())
		return entry.addresses()[0];
	else
		throw NoAddressFoundException(address);
}


const HostEntry& DNS::thisHost()
{
	return hostByName(Environment::nodeName());
}


void DNS::flushCache()
{
	FastMutex::ScopedLock lock(_mutex);

	_cache.clear();
}


int DNS::lastError()
{
#if defined(_WIN32)
	return GetLastError();
#else
	return h_errno;
#endif
}

	
void DNS::error(int code, const std::string& arg)
{
	switch (code)
	{
	case POCO_ESYSNOTREADY:
		throw NetException("Net subsystem not ready");
	case POCO_ENOTINIT:
		throw NetException("Net subsystem not initialized");
	case POCO_HOST_NOT_FOUND:
		throw HostNotFoundException(arg);
	case POCO_TRY_AGAIN:
		throw DNSException("Temporary DNS error while resolving", arg);
	case POCO_NO_RECOVERY:
		throw DNSException("Non recoverable DNS error while resolving", arg);
	case POCO_NO_DATA:
		throw NoAddressFoundException(arg);
	default:
		throw IOException(NumberFormatter::format(code));
	}
}


} } // namespace Poco::Net

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频一区| 亚洲欧洲www| 日韩欧美一区二区免费| 亚洲精品国产视频| 免费一级片91| 麻豆精品在线观看| 精品一区二区三区影院在线午夜 | 久久精品国产99| 麻豆91在线播放| 九九视频精品免费| 国产成人亚洲综合a∨婷婷| 国产美女视频91| 福利电影一区二区| 成人av免费在线| 欧美中文字幕亚洲一区二区va在线| 色国产精品一区在线观看| 欧美私模裸体表演在线观看| 欧美日韩日日摸| 精品奇米国产一区二区三区| 久久久蜜桃精品| 亚洲欧美视频在线观看| 亚洲一区二区三区四区在线免费观看| 玉米视频成人免费看| 午夜精品爽啪视频| 国产一区二区精品久久99| 成人aa视频在线观看| 91精品福利在线| 精品少妇一区二区三区免费观看| 久久影院午夜论| 亚洲欧美经典视频| 久久99热国产| 一本到一区二区三区| 777久久久精品| 国产精品毛片久久久久久 | 欧美日韩国产精品成人| 欧美大肚乱孕交hd孕妇| 亚洲色图在线播放| 免费久久精品视频| 91在线精品秘密一区二区| 欧美精品黑人性xxxx| 欧美国产日本视频| 秋霞av亚洲一区二区三| a亚洲天堂av| 欧美精品一区二区三区在线播放| 自拍偷拍亚洲综合| 韩国午夜理伦三级不卡影院| 欧美亚洲综合另类| 日本一区二区高清| 日韩影院精彩在线| 91浏览器打开| 欧美国产视频在线| 国产主播一区二区| 日韩一区二区视频在线观看| 亚洲猫色日本管| 国产精品一品二品| 日韩欧美国产高清| 五月综合激情婷婷六月色窝| kk眼镜猥琐国模调教系列一区二区 | 成人综合婷婷国产精品久久蜜臀 | 免费国产亚洲视频| 色老综合老女人久久久| 国产欧美视频一区二区三区| 天堂va蜜桃一区二区三区漫画版| 99久久久久久| 中文字幕一区av| 国产精品系列在线播放| 精品久久久影院| 麻豆精品国产传媒mv男同| 欧美精选午夜久久久乱码6080| 亚洲欧洲av色图| 99久免费精品视频在线观看| 久久久精品2019中文字幕之3| 免费美女久久99| 日韩视频免费观看高清完整版 | 国产日韩欧美精品综合| 久久99久久99小草精品免视看| 欧美日韩精品福利| 水野朝阳av一区二区三区| 91成人免费在线| 一区二区三区.www| 在线免费精品视频| 午夜欧美一区二区三区在线播放| 日本精品视频一区二区| 亚洲综合免费观看高清完整版在线 | 亚洲精品欧美激情| 99精品黄色片免费大全| 亚洲嫩草精品久久| 在线欧美小视频| 日韩av在线播放中文字幕| 欧美猛男超大videosgay| 婷婷综合在线观看| 日韩一区国产二区欧美三区| 久久99热狠狠色一区二区| 精品va天堂亚洲国产| 国产成人免费视频网站高清观看视频 | 欧美在线高清视频| 亚洲va欧美va人人爽午夜| 日韩女优毛片在线| 成人福利电影精品一区二区在线观看| 国产精品国产三级国产aⅴ无密码| 99麻豆久久久国产精品免费| 一区二区三区四区不卡视频| 日韩一区二区在线看| 国产精品白丝jk黑袜喷水| 亚洲精品欧美在线| 日韩欧美一卡二卡| av福利精品导航| 日本在线播放一区二区三区| 日韩美女视频19| 91精品欧美一区二区三区综合在 | 精品久久一区二区三区| av福利精品导航| 免费av成人在线| 中文字幕一区二区三区精华液 | 精品88久久久久88久久久| 丁香激情综合国产| 日韩av不卡在线观看| 国产精品情趣视频| 欧美一区二区三区在线视频| 国产成人亚洲综合a∨婷婷图片| 亚洲激情综合网| 国产亚洲成年网址在线观看| 91色九色蝌蚪| 国产成人亚洲综合a∨猫咪| 亚洲图片一区二区| 国产精品女上位| 精品福利一二区| 制服丝袜亚洲精品中文字幕| av欧美精品.com| 国产美女av一区二区三区| 丝袜美腿亚洲色图| 亚洲一区在线视频| 国产精品久久久久一区| 精品99久久久久久| 欧美一区二区免费视频| 在线视频一区二区三区| 粉嫩一区二区三区性色av| 精品在线亚洲视频| 日韩电影在线观看网站| 亚洲色图丝袜美腿| 国产精品对白交换视频| 中文字幕精品一区二区三区精品| 精品国产一区二区亚洲人成毛片| 欧美天堂一区二区三区| 一本大道久久a久久精品综合| 国产999精品久久| 国产91精品露脸国语对白| 国产一区二区三区观看| 美国毛片一区二区三区| 日本伊人精品一区二区三区观看方式| 亚洲乱码国产乱码精品精的特点| 中文字幕在线播放不卡一区| 欧美—级在线免费片| 中文字幕高清不卡| 中文子幕无线码一区tr| 国产精品美女久久久久久久久| 久久噜噜亚洲综合| 欧美国产一区二区| 中文字幕av在线一区二区三区| 国产精品无码永久免费888| 中文字幕免费在线观看视频一区| 亚洲国产电影在线观看| 中文字幕中文乱码欧美一区二区 | 色女孩综合影院| 91蜜桃视频在线| 在线观看视频一区二区欧美日韩| 一本久久精品一区二区| 欧美亚洲自拍偷拍| 欧美一级欧美三级在线观看| 精品国产伦一区二区三区观看体验| 日韩久久免费av| 久久久91精品国产一区二区三区| 国产午夜亚洲精品羞羞网站| 亚洲同性同志一二三专区| 亚洲精品第一国产综合野| 日韩在线a电影| 亚洲国产成人av网| 日本成人在线电影网| 国产精品一区二区免费不卡| 91捆绑美女网站| 91麻豆精品国产91久久久资源速度| 日韩一级免费一区| 中文子幕无线码一区tr| 亚洲五月六月丁香激情| 韩国一区二区视频| 一本大道久久a久久综合婷婷| 91精品国模一区二区三区| 久久九九影视网| 亚洲一区二区三区中文字幕| 国内外成人在线视频| 色婷婷精品久久二区二区蜜臀av | 欧美日韩国产三级| 久久久午夜精品理论片中文字幕| 亚洲视频免费在线观看| 久久精品72免费观看| 色综合久久综合网97色综合| 日韩一本二本av| 亚洲国产中文字幕| 成人国产一区二区三区精品| 欧美一区二区视频在线观看2022|