Сетевое программирование в .NET. Расшифровка IP-адреса (IP address specification). Обеспечение надежности доставки пакетов, страница 22

"{25,-28}{26}: {27,-10}{28}: {29,-10}\n" +

"{30,-28}{31}: {32,-10}{33}: {34,-10}\n" +

"{35,-28}{36}: {37,-10}{38}: {39,-10}\n" +

"{40,-28}{41}: {42,-10}{43}: {44,-10}\n" +

"{45,-28}{46}: {47,-10}{48}: {49,-10}\n" +

"{50,-28}{51}: {52,-10}{53}: {54,-10}\n" +

"{55,-28}{56}: {57,-10}{58}: {59,-10}\n" +

"{60,-28}{61}: {62,-10}{63}: {64,-10}\n",

"  Messages", snt, s.MessagesSent, rec, s.MessagesReceived,

"  Errors", snt, s.ErrorsSent, rec, s.ErrorsReceived,

"  Echo Requests", snt, s.EchoRequestsSent, rec, s.EchoRequestsReceived,

"  Echo Replies", snt, s.EchoRepliesSent, rec, s.EchoRepliesReceived,

"  Destination Unreachables", snt, s.DestinationUnreachableMessagesSent, rec,

s.DestinationUnreachableMessagesReceived,

"  Source Quenches", snt, s.SourceQuenchesSent, rec, s.SourceQuenchesReceived,

"  Redirects", snt, s.RedirectsSent, rec, s.RedirectsReceived,

"  TimeExceeded", snt, s.TimeExceededMessagesSent, rec, s.TimeExceededMessagesReceived,

"  Parameter Problems", snt, s.ParameterProblemsSent, rec, s.ParameterProblemsReceived,

"  Timestamp Requests", snt, s.TimestampRequestsSent, rec, s.TimestampRequestsReceived,

"  Timestamp Replies", snt, s.TimestampRepliesSent, rec, s.TimestampRepliesReceived,

"  Address Mask Requests", snt, s.AddressMaskRequestsSent, rec,

s.AddressMaskRequestsReceived,

"  Address Mask Replies", snt, s.AddressMaskRepliesSent, rec,

s.AddressMaskRepliesReceived);

Здесь вы также видите множество характеристик соединения, среди которых хочется отметить лишь некоторые. Понятие сорванных сообщений (source quench messages) используется для обозначения тех из них, которые были нарушены из-за потери пакетов (нехватки места в выходном буфере или слишком большой скорости прихода пакетов). Принимающий узел посылает сообщение (source quench), если он не справляется с потоком приходящих пакетов. Посылающий узел воспринимает его, как запрос снизить скорость передачи. Перенаправления (redirect messages) посылаются маршрутизаторами для того, чтобы информировать источник о существовании лучшего маршрута к узлу назначения.

Если в данный момент создано и функционирует соединение, то вы можете получить сведения о его параметрах и состоянии с помощью классов IPGlobalProperties и TcpConnectionInformation.

TcpConnectionInformation[] connections = p.GetActiveTcpConnections();

if (connections.Length == 0)

Console.Write("\nNo connection established" + line.Substring(0, 26));

foreach (TcpConnectionInformation t in connections)

{

Console.Write("\nConnection" + line.Substring(0, 10) +

"\n{0,-28}: {1}\n{2,-28}: {3}\n{4,-28}: {5}\n",

"Local endpoint", t.LocalEndPoint.Address,

"Remote endpoint", t.RemoteEndPoint.Address,

"State", t.State);

}

Исследуем класс Socket

Класс Socket содержит много методов и свойств, которые позволяют управлять сетевыми соединениями. С его помощью мы можем осуществлять обмен данными как в синхронном, так и в асинхронном режимах, работать с любыми протоколами, перечисленными в enum типа ProtocolType. Следующая таблица рассеивает сомнения в том, что при создании новых технологий люди не обдумывают концепции, не вырабатывают единые подходы, не реализуют их с учетом единых стандартов. Бюрократия не спит и изо всех сил старается упростить нашу жизнь.