同步操作将从 sulayman_tien/poco 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
//// ICMPClient.cpp//// Library: Net// Package: ICMP// Module: ICMPClient//// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.// and Contributors.//// SPDX-License-Identifier: BSL-1.0//#include "Poco/Net/SocketAddress.h"#include "Poco/Net/ICMPClient.h"#include "Poco/Net/NetException.h"#include "Poco/Channel.h"#include "Poco/Message.h"#include "Poco/Format.h"#include <sstream>using Poco::Channel;using Poco::Message;using Poco::InvalidArgumentException;using Poco::NotImplementedException;using Poco::TimeoutException;using Poco::Exception;namespace Poco {namespace Net {ICMPClient::ICMPClient(SocketAddress::Family family, int dataSize, int ttl, int timeout):_family(family),_dataSize(dataSize),_ttl(ttl),_timeout(timeout){}ICMPClient::~ICMPClient(){}int ICMPClient::ping(const std::string& address, int repeat) const{if (repeat <= 0) return 0;SocketAddress addr(address, 0);return ping(addr, repeat);}int ICMPClient::ping(SocketAddress& address, int repeat) const{if (repeat <= 0) return 0;ICMPSocket icmpSocket(_family, _dataSize, _ttl, _timeout);ICMPEventArgs eventArgs(address, repeat, icmpSocket.dataSize(), icmpSocket.ttl());pingBegin.notify(this, eventArgs);for (int i = 0; i < repeat; ++i){try{int sent = icmpSocket.sendTo(address);if (icmpSocket.packetSize() == sent){SocketAddress requestAddress(address);++eventArgs;int t = icmpSocket.receiveFrom(address);poco_assert (address.host() == requestAddress.host());eventArgs.setReplyTime(i, t);pingReply.notify(this, eventArgs);}elsethrow ICMPException(Poco::format("Error sending ICMP packet ""(sent=%d, expected=%d)", sent, icmpSocket.packetSize()));}catch (TimeoutException&){std::ostringstream os;os << address.host().toString() << ": Request timed out.";eventArgs.setError(i, os.str());pingError.notify(this, eventArgs);continue;}catch (ICMPException& ex){std::ostringstream os;os << address.host().toString() << ": " << ex.displayText();eventArgs.setError(i, os.str());pingError.notify(this, eventArgs);continue;}catch (Exception& ex){eventArgs.setError(i, ex.displayText());pingError.notify(this, eventArgs);continue;}}pingEnd.notify(this, eventArgs);return eventArgs.received();}int ICMPClient::pingIPv4(const std::string& address, int repeat,int dataSize, int ttl, int timeout){if (repeat <= 0) return 0;SocketAddress a(address, 0);return ping(a, IPAddress::IPv4, repeat, dataSize, ttl, timeout);}int ICMPClient::ping(SocketAddress& address,IPAddress::Family family, int repeat,int dataSize, int ttl, int timeout){if (repeat <= 0) return 0;ICMPSocket icmpSocket(family, dataSize, ttl, timeout);int received = 0;for (int i = 0; i < repeat; ++i){try{SocketAddress requestAddress(address);if (icmpSocket.sendTo(address) == icmpSocket.packetSize()){icmpSocket.receiveFrom(address);poco_assert (address.host() == requestAddress.host());++received;}}catch (Exception&) { }}return received;}} } // namespace Poco::Net
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。