ProtocolType 枚举指定 Socket 类支持的协议

成员名称 说明
Ggp

受 .NET Framework 精简版的支持。

网关到网关协议。
Icmp

受 .NET Framework 精简版的支持。

网际消息控制协议。
Idp

受 .NET Framework 精简版的支持。

IDP 协议。
Igmp

受 .NET Framework 精简版的支持。

网际组管理协议。
IP

受 .NET Framework 精简版的支持。

网际协议。
IPv6 网际协议 v6。
Ipx

受 .NET Framework 精简版的支持。

IPX 协议。
ND

受 .NET Framework 精简版的支持。

网络磁盘协议(非正式)。
Pup

受 .NET Framework 精简版的支持。

PUP 协议。
Raw

受 .NET Framework 精简版的支持。

原始 UP 包协议。
Spx

受 .NET Framework 精简版的支持。

SPX 协议。
SpxII

受 .NET Framework 精简版的支持。

SPX 版本 2 协议。
Tcp

受 .NET Framework 精简版的支持。

传输控制协议。
Udp

受 .NET Framework 精简版的支持。

用户数据文报协议。
Unknown

受 .NET Framework 精简版的支持。

未知协议。
Unspecified

受 .NET Framework 精简版的支持。

未指定的协议。

如何使用 ProtocolType 来实例化Socket

using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

public class Sample
{

  public static string DoSocketGet(string server)
  {
    //Set up variables and String to write to the server.
    Encoding ASCII = Encoding.ASCII;
    string Get = "GET / HTTP/1.1\r\nHost: " + server +
                 "\r\nConnection: Close\r\n\r\n";
    Byte[] ByteGet = ASCII.GetBytes(Get);
    Byte[] RecvBytes = new Byte[256];
    String strRetPage = null;


    // IPAddress and IPEndPoint represent the endpoint that will
    //   receive the request.
    // Get first IPAddress in list return by DNS.


    try
    {


      // Define those variables to be evaluated in the next for loop and
      // then used to connect to the server. These variables are defined
      // outside the for loop to make them accessible there after.
      Socket s = null;
      IPEndPoint hostEndPoint;
      IPAddress hostAddress = null;
      int conPort = 80;

      // Get DNS host information.
      IPHostEntry hostInfo = Dns.Resolve(server);
      // Get the DNS IP addresses associated with the host.
      IPAddress[] IPaddresses = hostInfo.AddressList;

      // Evaluate the socket and receiving host IPAddress and IPEndPoint.
      for (int index=0; index<IPaddresses.Length; index++)
      {
        hostAddress = IPaddresses[index];
        hostEndPoint = new IPEndPoint(hostAddress, conPort);


        // Creates the Socket to send data over a TCP connection.
        s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );


 
        // Connect to the host using its IPEndPoint.
        s.Connect(hostEndPoint);

        if (!s.Connected)
        {
          // Connection failed, try next IPaddress.
          strRetPage = "Unable to connect to host";
          s = null;
          continue;
        }

        // Sent the GET request to the host.
        s.Send(ByteGet, ByteGet.Length, 0);


      } // End of the for loop.     


 
      // Receive the host home page content and loop until all the data is received.
      Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
      strRetPage = "Default HTML page on " + server + ":\r\n";
      strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
 
      while (bytes > 0)
      {
        bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
        strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
      }

   
    } // End of the try block.
   
    catch(SocketException e)
    {
      Console.WriteLine("SocketException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(ArgumentNullException e)
    {
      Console.WriteLine("ArgumentNullException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(NullReferenceException e)
    {
      Console.WriteLine("NullReferenceException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(Exception e)
    {
      Console.WriteLine("Exception caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
   
    return strRetPage;

}
   public static void Main()
   {
      Console.WriteLine(DoSocketGet("localhost"));
   }
 }


原文地址:https://www.cnblogs.com/xh831213/p/329595.html