• 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"));
       }
     }


  • 相关阅读:
    HGOI 20191029am 题解
    『ZJOI2019 D2T2』语言
    『NOIP 2019Day2 T3』 保卫王国(defense)
    『HGOI 20190917』Lefkaritika 题解 (DP)
    『HGOI 20190917』Cruise 题解 (计算几何+DP)
    HGOI 20190830 题解
    『Codeforces 1186E 』Vus the Cossack and a Field (性质+大力讨论)
    HGOI 20190828 题解
    BZOJ 1934 善意的投票
    BZOJ 2763 飞行路线 BFS分层
  • 原文地址:https://www.cnblogs.com/xh831213/p/329595.html
Copyright © 2020-2023  润新知