Сетевое программирование в .NET, страница 22

  "  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. Следующая таблица рассеивает сомнения в том, что при создании новых технологий люди не обдумывают концепции, не вырабатывают единые подходы, не реализуют их с учетом единых стандартов. Бюрократия не спит и изо всех сил старается упростить нашу жизнь.

Элемент перечисления ProtocolType

Протокол

Ggp

Gateway To Gateway

Icmp

Internet Control Message

IcmpV6

Internet Control Message version 6

Idp

Internet Datagram

Igmp

Internet Group Management

IP

Internet Protocol

IPSecAuthenticationHeader

IPv6 Authentication header. Детали в RFC 2292 section 2.2.1

IPSecEncapsulatingSecurityPayload

IPv6 Encapsulating Security Payload header

IPv4

Internet Protocol version 4

IPv6

Internet Protocol version 6 (IPv6)

IPv6DestinationOptions

IPv6 Destination Options header

IPv6FragmentHeader

IPv6 Fragment header

IPv6HopByHopOptions

IPv6 Hop by Hop Options header

IPv6NoNextHeader

IPv6 No next header

IPv6RoutingHeader

IPv6 Routing header

Ipx

Internet Packet Exchange Protocol

ND

Net Disk Protocol (unofficial)

Pup

PARC Universal Packet

Raw

Raw IP packet

Spx

Sequenced Packet Exchange

SpxII

Sequenced Packet Exchange version 2

Tcp

Transmission Control Protocol

Udp

User Datagram Protocol

Unknown

Неизвестный протокол

Unspecified

Незарегистрированный протокол