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

Элемент перечисления 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

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

Рассмотрим пример, иллюстрирующий работу с объектом класса Socket. В нем мы создаем сетевой разъем, соединяем его с локальным компьютером и выводим основные свойства трех объектов: конечного узла соединения, самого разъема (Socket) и вспомогательного объекта класса SocketAddress, который часто используется в сетевых приложениях для опроса текущего состояния разъема.

public static void Main()

{

try

{

IPHostEntry host = Dns.GetHostEntry (Dns.GetHostName());//"localhost"

foreach (IPAddress address in host.AddressList)

{

IPEndPoint point = new IPEndPoint (address, 80);

Socket socket=new Socket(point.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

socket.Connect(point);

if (socket.Connected)

{

Console.WriteLine("\n  End Point Info\n" +

"\n{0,-20}: {1}\n{2,-20}: {3}\n{4,-20}: {5}\n{6,-20}: {7}\n",

"End Point", point.ToString(),

"Address", point.Address,

"AddressFamily", point.AddressFamily,

"Port", point.Port);

Console.WriteLine("\n  Socket Info\n" +

"\n{0,-20}: {1}\n{2,-20}: {3}\n{4,-20}: {5}\n{6,-20}: {7}" +

"\n{8,-20}: {9}\n{10,-20}: {11}\n{12,-20}: {13}\n{14,-20}: {15}" +

"\n{16,-20}: {17}\n{18,-20}: {19}\n",

"SocketType", socket.SocketType,

"Protocol Type", socket.ProtocolType,

"Local EndPoint", socket.LocalEndPoint,

"Remote EndPoint", socket.RemoteEndPoint,

"Socket Handle", socket.Handle,

"Is in Blocking Mode", socket.Blocking,

"Send Timeout", socket.SendTimeout,

"Receive Timeout", socket.ReceiveTimeout,

"Send BufferSize", socket.SendBufferSize,

"Receive BufferSize", socket.ReceiveBufferSize);

SocketAddress socketAddress = point.Serialize();

Console.WriteLine("\n  Serialized endpoint\n" +

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

"String", socketAddress.ToString(),

"First byte", socketAddress[0],

"Family", socketAddress.Family,

"Size", socketAddress.Size);

Console.WriteLine("\n  SocketAddress Bytes\n");

for (int i = 0; i < socketAddress.Size; i++)

Console.Write("{0}, ", socketAddress[i]);

}

socket.Close();

}

}

catch (SocketException e)

{

Console.WriteLine("Source: {0}\nMessage: {1}", e.Source, e.Message);

}

Console.WriteLine("\n\n");

}