Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Net / System / Net / NetworkInformation / SystemIPInterfaceStatistics.cs / 1 / SystemIPInterfaceStatistics.cs
///
/// Provides support for ip configuation information and statistics.
///
///
namespace System.Net.NetworkInformation {
using System.Net.Sockets;
using System;
using System.ComponentModel;
/// IP statistics
internal class SystemIPv4InterfaceStatistics:IPv4InterfaceStatistics {
MibIfRow ifRow = new MibIfRow();
private SystemIPv4InterfaceStatistics(){ }
internal SystemIPv4InterfaceStatistics(long index){
GetIfEntry(index);
}
public override long OutputQueueLength{get {return ifRow.dwOutQLen;}}
public override long BytesSent{get {return ifRow.dwOutOctets;}}
public override long BytesReceived{get {return ifRow.dwInOctets;}}
public override long UnicastPacketsSent{get {return ifRow.dwOutUcastPkts;}}
public override long UnicastPacketsReceived{get { return ifRow.dwInUcastPkts;}}
public override long NonUnicastPacketsSent{get { return ifRow.dwOutNUcastPkts;}}
public override long NonUnicastPacketsReceived{get { return ifRow.dwInNUcastPkts;}}
public override long IncomingPacketsDiscarded{get { return ifRow.dwInDiscards;}}
public override long OutgoingPacketsDiscarded{get { return ifRow.dwOutDiscards;}}
public override long IncomingPacketsWithErrors{get { return ifRow.dwInErrors;}}
public override long OutgoingPacketsWithErrors{get { return ifRow.dwOutErrors;}}
public override long IncomingUnknownProtocolPackets{get { return ifRow.dwInUnknownProtos;}}
internal long Mtu{get { return ifRow.dwMtu;}}
internal OperationalStatus OperationalStatus{
get{
switch (ifRow.operStatus) {
case OldOperationalStatus.NonOperational:
return OperationalStatus.Down;
case OldOperationalStatus.Unreachable:
return OperationalStatus.Down;
case OldOperationalStatus.Disconnected:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connecting:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connected:
return OperationalStatus.Up;
case OldOperationalStatus.Operational:
return OperationalStatus.Up;
}
//state unknow
return OperationalStatus.Unknown;
}
}
internal long Speed{get { return ifRow.dwSpeed;}}
//This method is used to get information for ipv4 specific interfaces
//we should only call this the first time one of the properties
//are accessed.
void GetIfEntry(long index) {
if (index == 0 )
return;
ifRow.dwIndex = (uint)index;
uint result = UnsafeNetInfoNativeMethods.GetIfEntry(ref ifRow);
if (result != IpHelperErrors.Success) {
throw new NetworkInformationException((int)result);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
///
/// Provides support for ip configuation information and statistics.
///
///
namespace System.Net.NetworkInformation {
using System.Net.Sockets;
using System;
using System.ComponentModel;
/// IP statistics
internal class SystemIPv4InterfaceStatistics:IPv4InterfaceStatistics {
MibIfRow ifRow = new MibIfRow();
private SystemIPv4InterfaceStatistics(){ }
internal SystemIPv4InterfaceStatistics(long index){
GetIfEntry(index);
}
public override long OutputQueueLength{get {return ifRow.dwOutQLen;}}
public override long BytesSent{get {return ifRow.dwOutOctets;}}
public override long BytesReceived{get {return ifRow.dwInOctets;}}
public override long UnicastPacketsSent{get {return ifRow.dwOutUcastPkts;}}
public override long UnicastPacketsReceived{get { return ifRow.dwInUcastPkts;}}
public override long NonUnicastPacketsSent{get { return ifRow.dwOutNUcastPkts;}}
public override long NonUnicastPacketsReceived{get { return ifRow.dwInNUcastPkts;}}
public override long IncomingPacketsDiscarded{get { return ifRow.dwInDiscards;}}
public override long OutgoingPacketsDiscarded{get { return ifRow.dwOutDiscards;}}
public override long IncomingPacketsWithErrors{get { return ifRow.dwInErrors;}}
public override long OutgoingPacketsWithErrors{get { return ifRow.dwOutErrors;}}
public override long IncomingUnknownProtocolPackets{get { return ifRow.dwInUnknownProtos;}}
internal long Mtu{get { return ifRow.dwMtu;}}
internal OperationalStatus OperationalStatus{
get{
switch (ifRow.operStatus) {
case OldOperationalStatus.NonOperational:
return OperationalStatus.Down;
case OldOperationalStatus.Unreachable:
return OperationalStatus.Down;
case OldOperationalStatus.Disconnected:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connecting:
return OperationalStatus.Dormant;
case OldOperationalStatus.Connected:
return OperationalStatus.Up;
case OldOperationalStatus.Operational:
return OperationalStatus.Up;
}
//state unknow
return OperationalStatus.Unknown;
}
}
internal long Speed{get { return ifRow.dwSpeed;}}
//This method is used to get information for ipv4 specific interfaces
//we should only call this the first time one of the properties
//are accessed.
void GetIfEntry(long index) {
if (index == 0 )
return;
ifRow.dwIndex = (uint)index;
uint result = UnsafeNetInfoNativeMethods.GetIfEntry(ref ifRow);
if (result != IpHelperErrors.Success) {
throw new NetworkInformationException((int)result);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SimpleFileLog.cs
- WaitHandleCannotBeOpenedException.cs
- ServiceOperationViewControl.cs
- SpellerError.cs
- BevelBitmapEffect.cs
- IndentedTextWriter.cs
- SqlNamer.cs
- CollectionType.cs
- TrustManagerPromptUI.cs
- EntitySetBase.cs
- RectAnimationClockResource.cs
- EndPoint.cs
- PreviewKeyDownEventArgs.cs
- CommandID.cs
- CodeMemberProperty.cs
- PipeSecurity.cs
- DrawingImage.cs
- SystemWebSectionGroup.cs
- BezierSegment.cs
- NativeMethods.cs
- FormatterConverter.cs
- StyleBamlRecordReader.cs
- XmlSchemas.cs
- DrawingBrush.cs
- objectresult_tresulttype.cs
- ImportCatalogPart.cs
- XmlAttributeAttribute.cs
- CodeStatementCollection.cs
- SafeFindHandle.cs
- HeaderCollection.cs
- RequestQueue.cs
- RoutingExtensionElement.cs
- PeerInvitationResponse.cs
- ValueConversionAttribute.cs
- MetadataPropertyCollection.cs
- SystemFonts.cs
- ThousandthOfEmRealPoints.cs
- Win32KeyboardDevice.cs
- ReadOnlyTernaryTree.cs
- AxHost.cs
- MembershipUser.cs
- ProtectedConfigurationSection.cs
- UndoManager.cs
- DispatcherEventArgs.cs
- InstanceHandleReference.cs
- VisualBrush.cs
- MetadataFile.cs
- TdsParserSafeHandles.cs
- DBCommand.cs
- AmbiguousMatchException.cs
- WebCategoryAttribute.cs
- RequestTimeoutManager.cs
- ClientScriptManagerWrapper.cs
- ListItemCollection.cs
- LinkLabel.cs
- Timer.cs
- UnSafeCharBuffer.cs
- XsdBuilder.cs
- UIElementIsland.cs
- FontWeight.cs
- MatrixUtil.cs
- Timer.cs
- ClientFormsAuthenticationCredentials.cs
- ScrollEvent.cs
- ListViewDeletedEventArgs.cs
- RbTree.cs
- AxHost.cs
- DigestComparer.cs
- Config.cs
- Stack.cs
- SharedUtils.cs
- ListViewSelectEventArgs.cs
- NativeCppClassAttribute.cs
- ApplicationId.cs
- Misc.cs
- Enum.cs
- IMembershipProvider.cs
- Operator.cs
- ComponentRenameEvent.cs
- OrderingExpression.cs
- TrackingServices.cs
- validation.cs
- ProtocolElement.cs
- AssemblyResourceLoader.cs
- WebControlAdapter.cs
- MessageBox.cs
- ListViewItemEventArgs.cs
- MatrixTransform3D.cs
- Journal.cs
- FilteredDataSetHelper.cs
- Pair.cs
- XmlDataProvider.cs
- EventlogProvider.cs
- SubclassTypeValidatorAttribute.cs
- HttpRequest.cs
- MatrixAnimationBase.cs
- ClientScriptManager.cs
- DbSetClause.cs
- CollectionTypeElement.cs
- OrderPreservingPipeliningMergeHelper.cs