Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Net / System / Net / NetworkInformation / PingReply.cs / 1 / PingReply.cs
using System.Net.Sockets; using System.Runtime.InteropServices; namespace System.Net.NetworkInformation { public class PingReply { IPAddress address; PingOptions options; IPStatus ipStatus; // the status code returned by icmpsendecho, or the icmp status field on the raw socket long rtt; // the round trip time. byte[] buffer; //buffer of the data internal PingReply(){ } internal PingReply (IPStatus ipStatus) { this.ipStatus = ipStatus; buffer = new byte[0]; } // The downlevel constructor. internal PingReply (byte[] data, int dataLength, IPAddress address, int time) { this.address = address; rtt = time; ipStatus = GetIPStatus ((IcmpV4Type)data[20],(IcmpV4Code) data[21]); if (ipStatus == IPStatus.Success) { buffer = new byte[dataLength - 28]; Array.Copy (data, 28, buffer, 0, dataLength - 28); } else buffer = new byte[0]; } // the main constructor for the icmpsendecho apis internal PingReply (IcmpEchoReply reply) { address = new IPAddress (reply.address); ipStatus = (IPStatus)reply.status; //the icmpsendecho ip status codes //only copy the data if we succeed w/ the ping operation if (ipStatus == IPStatus.Success) { rtt = (long)reply.roundTripTime; buffer = new byte[reply.dataSize]; Marshal.Copy (reply.data, buffer, 0, reply.dataSize); options = new PingOptions (reply.options); } else buffer = new byte[0]; } // the main constructor for the icmpsendecho apis internal PingReply (Icmp6EchoReply reply, IntPtr dataPtr, int sendSize) { address = new IPAddress(reply.Address.Address,reply.Address.ScopeID); ipStatus = (IPStatus)reply.Status; //the icmpsendecho ip status codes //only copy the data if we succeed w/ the ping operation if (ipStatus == IPStatus.Success) { rtt = (long)reply.RoundTripTime; buffer = new byte[sendSize]; Marshal.Copy (IntPtrHelper.Add(dataPtr, 36), buffer, 0, sendSize); //options = new PingOptions (reply.options); } else buffer = new byte[0]; } //translates the relevant icmpsendecho codes to a ipstatus code private IPStatus GetIPStatus (IcmpV4Type type, IcmpV4Code code) { switch (type) { case IcmpV4Type.ICMP4_ECHO_REPLY: return IPStatus.Success; case IcmpV4Type.ICMP4_SOURCE_QUENCH: return IPStatus.SourceQuench; case IcmpV4Type.ICMP4_PARAM_PROB: return IPStatus.ParameterProblem; case IcmpV4Type.ICMP4_TIME_EXCEEDED: return IPStatus.TtlExpired; case IcmpV4Type.ICMP4_DST_UNREACH: { switch (code) { case IcmpV4Code.ICMP4_UNREACH_NET: return IPStatus.DestinationNetworkUnreachable; case IcmpV4Code.ICMP4_UNREACH_HOST: return IPStatus.DestinationHostUnreachable; case IcmpV4Code.ICMP4_UNREACH_PROTOCOL: return IPStatus.DestinationProtocolUnreachable; case IcmpV4Code.ICMP4_UNREACH_PORT: return IPStatus.DestinationPortUnreachable; case IcmpV4Code.ICMP4_UNREACH_FRAG_NEEDED: return IPStatus.PacketTooBig; default: return IPStatus.DestinationUnreachable; } } } return IPStatus.Unknown; } //the basic properties public IPStatus Status { get { return ipStatus; } } public IPAddress Address { get { return address; } } public long RoundtripTime { get { return rtt; } } public PingOptions Options { get { if (!ComNetOS.IsWin2K) { throw new PlatformNotSupportedException(SR.GetString(SR.Win2000Required)); } return options; } } public byte[] Buffer { get { return buffer; } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PersonalizationStateQuery.cs
- CodeDefaultValueExpression.cs
- FlowDocumentFormatter.cs
- CompositeDataBoundControl.cs
- CounterNameConverter.cs
- ConsumerConnectionPointCollection.cs
- BCryptNative.cs
- PauseStoryboard.cs
- SslStream.cs
- RuleSettingsCollection.cs
- EventProvider.cs
- ExpressionReplacer.cs
- ConfigXmlReader.cs
- MD5CryptoServiceProvider.cs
- ContextToken.cs
- DesignOnlyAttribute.cs
- ActivityWithResultValueSerializer.cs
- ConfigurationSection.cs
- BoundPropertyEntry.cs
- EventBuilder.cs
- AmbientLight.cs
- KeySplineConverter.cs
- SecureEnvironment.cs
- ToolboxItemCollection.cs
- ContextStack.cs
- DbTransaction.cs
- ProcessModuleDesigner.cs
- AttributeXamlType.cs
- CollectionAdapters.cs
- Authorization.cs
- StylusEventArgs.cs
- SqlDuplicator.cs
- SessionIDManager.cs
- ActionMessageFilter.cs
- QueryComponents.cs
- InvalidProgramException.cs
- WsdlBuildProvider.cs
- WeakRefEnumerator.cs
- RemoteX509AsymmetricSecurityKey.cs
- TextureBrush.cs
- WindowsListViewItem.cs
- AssemblyInfo.cs
- ListViewCancelEventArgs.cs
- BitmapSource.cs
- Executor.cs
- HwndAppCommandInputProvider.cs
- loginstatus.cs
- Point3DValueSerializer.cs
- Attribute.cs
- COM2ExtendedTypeConverter.cs
- ProfileProvider.cs
- FixedHyperLink.cs
- EncoderFallback.cs
- ElementProxy.cs
- VectorAnimationBase.cs
- RoleService.cs
- CallId.cs
- ContextMenuStripActionList.cs
- XmlSchemaSimpleTypeList.cs
- ZipIOLocalFileBlock.cs
- SqlClientPermission.cs
- WebEventCodes.cs
- TextTreeUndo.cs
- SecurityTokenSerializer.cs
- UserControlBuildProvider.cs
- DeferrableContentConverter.cs
- MimeTypePropertyAttribute.cs
- ApplicationException.cs
- TextStore.cs
- SettingsContext.cs
- TreeNodeBinding.cs
- XmlSchemaComplexContent.cs
- WmfPlaceableFileHeader.cs
- View.cs
- FormatConvertedBitmap.cs
- ScriptReference.cs
- WsatConfiguration.cs
- WbmpConverter.cs
- DynamicPropertyReader.cs
- WorkflowInlining.cs
- LongSumAggregationOperator.cs
- commandenforcer.cs
- DrawingVisual.cs
- ProfessionalColors.cs
- Empty.cs
- XmlSchemaAnyAttribute.cs
- DataGridRelationshipRow.cs
- WebPartManagerInternals.cs
- KeyedHashAlgorithm.cs
- DbTransaction.cs
- TCEAdapterGenerator.cs
- FixedTextPointer.cs
- RsaKeyIdentifierClause.cs
- AmbientLight.cs
- AffineTransform3D.cs
- DataGridViewImageCell.cs
- PackWebRequestFactory.cs
- AuthenticationService.cs
- PageCache.cs
- WorkflowDataContext.cs