构造函数
 
 
  名称 说明
Socket(AddressFamily, SocketType, ProtocolType)

Socket 类使用指定的地址族、 套接字类型和协议。

Socket(SocketInformation)

DuplicateAndClose。

Socket(SocketType, ProtocolType)

Socket 类使用指定的套接字类型和协议。

属性
 
 
  名称 说明
AddressFamily

Socket。

Available

获取已经从网络接收且可供读取的数据量。

Blocking

Socket 处于阻塞模式。

Connected

Receive 操作。

DontFragment

Socket 允许 Internet 协议 (IP) 的数据报进行分片。

DualMode

Socket 是否是用于 IPv4 和 IPv6 的双模式套接字。

EnableBroadcast

Socket 可以发送或接收广播的数据包。

ExclusiveAddressUse

Socket 仅允许一个进程绑定到端口。

Handle

Socket。

IsBound

Socket 绑定到特定本地端口。

LingerState

Socket 将延迟发送所有挂起的数据以尝试关闭套接字。

LocalEndPoint

获取本地终结点。

MulticastLoopback

获取或设置一个值,指定是否传出多播的数据包将传输到发送应用程序。

NoDelay

Socket 使用 Nagle 算法。

OSSupportsIPv4

指示基础操作系统和网络适配器是否支持 Internet 协议版本 4 (IPv4)。

OSSupportsIPv6

指示基础操作系统和网络适配器是否支持 Internet 协议版本 6 (IPv6)。

ProtocolType

Socket。

ReceiveBufferSize

Socket。

ReceiveTimeout

Receive 调用将会超时。

RemoteEndPoint

获取远程终结点。

SendBufferSize

Socket。

SendTimeout

Send 调用将会超时。

SocketType

Socket 的类型。

SupportsIPv4

已过时。 获取一个值,该值指示 IPv4 支持是否可用且已启用当前主机上。

SupportsIPv6

已过时。 Dns 成员。

Ttl

Socket。

UseOnlyOverlappedIO

指定套接字是否应仅使用重叠的 I/O 模式。

方法
 
 
  名称 说明
Accept()

Socket 为新创建的连接。

AcceptAsync(SocketAsyncEventArgs)

开始一个异步操作以接受传入的连接尝试。

BeginAccept(AsyncCallback, Object)

开始一个异步操作以接受传入的连接尝试。

BeginAccept(Int32, AsyncCallback, Object)

开始异步操作以接受传入的连接尝试并接收第一个客户端应用程序所发送的数据块。

BeginAccept(Socket, Int32, AsyncCallback, Object)

开始异步操作以接受传入的连接尝试从指定的套接字并接收第一个客户端应用程序所发送的数据块。

BeginConnect(EndPoint, AsyncCallback, Object)

开始一个对远程主机连接的异步请求。

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

IPAddress 和端口号指定。

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

IPAddress 数组和端口号指定。

BeginConnect(String, Int32, AsyncCallback, Object)

 主机由主机名和端口号指定。

BeginDisconnect(Boolean, AsyncCallback, Object)

开始一个异步请求来断开与远程终结点的连接。

BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Socket。

BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Socket。

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Socket。

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Socket。

BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

开始以异步方式从指定的网络设备上接收数据。

BeginReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

SocketFlags, ,并将终结点和数据包信息存储...

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Socket。

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Socket。

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Socket。

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Socket。

BeginSendFile(String, AsyncCallback, Object)

UseDefaultWorkerThread 标志。

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Socket 对象。

BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

以异步方式将数据发送到特定的远程主机。

Bind(EndPoint)

Socket 与本地终结点。

CancelConnectAsync(SocketAsyncEventArgs)

取消对远程主机连接的异步请求。

Close()

Socket 连接和释放所有关联资源。

Close(Int32)

Socket 连接并释放所有与指定超时关联的资源,以允许要发送的数据排队。

Connect(EndPoint)

建立与远程主机的连接。

Connect(IPAddress, Int32)

 主机指定的 IP 地址和端口号。

Connect(IPAddress[], Int32)

 主机指定的 IP 地址数组和端口号。

Connect(String, Int32)

 主机由主机名和端口号指定。

ConnectAsync(SocketAsyncEventArgs)

开始对到远程主机的连接的异步请求。

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

开始对到远程主机的连接的异步请求。

Disconnect(Boolean)

关闭套接字连接,并允许重用套接字。

DisconnectAsync(SocketAsyncEventArgs)

开始一个异步请求来断开与远程终结点的连接。

Dispose()

Socket 类的当前实例所使用的所有资源。

Dispose(Boolean)

Socket 使用的非托管资源,并可根据需要释放托管资源。

DuplicateAndClose(Int32)

复制目标进程的套接字引用,并关闭此进程的套接字。

EndAccept(Byte[], IAsyncResult)

 此方法返回包含传输的初始数据的缓冲区。

EndAccept(Byte[], Int32, IAsyncResult)

 此方法返回包含初始数据和传输的字节数的缓冲区。

EndAccept(IAsyncResult)

Socket 来处理远程主机通信。

EndConnect(IAsyncResult)

结束挂起的异步连接请求。

EndDisconnect(IAsyncResult)

结束挂起的异步断开连接请求。

EndReceive(IAsyncResult)

结束挂起的异步读取。

EndReceive(IAsyncResult, SocketError)

结束挂起的异步读取。

EndReceiveFrom(IAsyncResult, EndPoint)

结束挂起的异步读取从特定的终结点。

EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

EndReceiveFrom。

EndSend(IAsyncResult)

结束挂起的异步发送。

EndSend(IAsyncResult, SocketError)

结束挂起的异步发送。

EndSendFile(IAsyncResult)

结束挂起的异步发送的文件。

EndSendTo(IAsyncResult)

结束挂起的异步发送到特定位置。

Equals(Object)

Object。)

Finalize()

Object.Finalize()。)

GetHashCode()

Object。)

GetSocketOption(SocketOptionLevel, SocketOptionName)

Socket 选项时,表示为一个对象。

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Socket 选项设置,表示为字节数组。

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Socket 数组中的选项。

GetType()

Object。)

IOControl(Int32, Byte[], Byte[])

Socket 使用数字控制代码。

IOControl(IOControlCode, Byte[], Byte[])

IOControlCode 枚举来指定控制代码。

Listen(Int32)

Socket 处于侦听状态。

MemberwiseClone()

Object。)

Poll(Int32, SelectMode)

Socket。

Receive(Byte[])

Socket 到接收缓冲区中。

Receive(Byte[], Int32, Int32, SocketFlags)

SocketFlags。

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

SocketFlags。

Receive(Byte[], Int32, SocketFlags)

SocketFlags。

Receive(Byte[], SocketFlags)

SocketFlags。

Receive(IList<ArraySegment<Byte>>)

Socket 的接收缓冲区的列表中。

Receive(IList<ArraySegment<Byte>>, SocketFlags)

SocketFlags。

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

SocketFlags。

ReceiveAsync(SocketAsyncEventArgs)

Socket 对象。

ReceiveFrom(Byte[], EndPoint)

到数据缓冲区中接收数据报并存储终结点。

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

SocketFlags 将指定的数据字节数接收到数据缓冲区的指定位置,并存储终结点。

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

SocketFlags, ,并将存储终结点。

ReceiveFrom(Byte[], SocketFlags, EndPoint)

SocketFlags, ,并将存储终结点。

ReceiveFromAsync(SocketAsyncEventArgs)

开始以异步方式从指定的网络设备上接收数据。

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

SocketFlags, ,并将终结点和数据包信息存储。

ReceiveMessageFromAsync(SocketAsyncEventArgs)

SocketAsyncEventArgs.SocketFlags, ,并将终结点和数据包信息存储。

Select(IList, IList, IList, Int32)

确定一个或多个套接字的状态。

Send(Byte[])

Socket。

Send(Byte[], Int32, Int32, SocketFlags)

Socket。

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

SocketFlags

Send(Byte[], Int32, SocketFlags)

SocketFlags。

Send(Byte[], SocketFlags)

SocketFlags。

Send(IList<ArraySegment<Byte>>)

Socket。

Send(IList<ArraySegment<Byte>>, SocketFlags)

SocketFlags。

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

SocketFlags。

SendAsync(SocketAsyncEventArgs)

Socket 对象。

SendFile(String)

UseDefaultWorkerThread传输标志。

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Socket 对象。

SendPacketsAsync(SocketAsyncEventArgs)

Socket 对象。

SendTo(Byte[], EndPoint)

将数据发送到指定的终结点。

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

SocketFlags。

SendTo(Byte[], Int32, SocketFlags, EndPoint)

SocketFlags。

SendTo(Byte[], SocketFlags, EndPoint)

SocketFlags。

SendToAsync(SocketAsyncEventArgs)

以异步方式将数据发送到特定的远程主机。

SetIPProtectionLevel(IPProtectionLevel)

套接字设置 IP 保护级别。

SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

Boolean 值。

SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Socket 选项指定的值,表示为字节数组。

SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Socket 选项指定的整数值。

SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

Socket 选项指定的值,表示为一个对象。

Shutdown(SocketShutdown)

Socket。

ToString()

Object。)

 

 

示例
 
 

 此示例中受到阻止,直到收到整个页面。

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

public class GetSocket
{
    private static Socket ConnectSocket(string server, int port)
    {
        Socket s = null;
        IPHostEntry hostEntry = null;

        // Get host related information.
        hostEntry = Dns.GetHostEntry(server);

        // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
        // an exception that occurs when the host IP Address is not compatible with the address family
        // (typical in the IPv6 case).
        foreach(IPAddress address in hostEntry.AddressList)
        {
            IPEndPoint ipe = new IPEndPoint(address, port);
            Socket tempSocket = 
                new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            tempSocket.Connect(ipe);

            if(tempSocket.Connected)
            {
                s = tempSocket;
                break;
            }
            else
            {
                continue;
            }
        }
        return s;
    }

    // This method requests the home page content for the specified server.
    private static string SocketSendReceive(string server, int port) 
    {
        string request = "GET / HTTP/1.1\r\nHost: " + server + 
            "\r\nConnection: Close\r\n\r\n";
        Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
        Byte[] bytesReceived = new Byte[256];

        // Create a socket connection with the specified server and port.
        Socket s = ConnectSocket(server, port);

        if (s == null)
            return ("Connection failed");

        // Send request to the server.
        s.Send(bytesSent, bytesSent.Length, 0);  

        // Receive the server home page content.
        int bytes = 0;
        string page = "Default HTML page on " + server + ":\r\n";

        // The following will block until te page is transmitted.
        do {
            bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
            page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
        }
        while (bytes > 0);

        return page;
    }

    public static void Main(string[] args) 
    {
        string host;
        int port = 80;

        if (args.Length == 0)
            // If no server name is passed as argument to this program, 
            // use the current host name as the default.
            host = Dns.GetHostName();
        else
            host = args[0];

        string result = SocketSendReceive(host, port); 
        Console.WriteLine(result);
    }
}

 

 

 

相关文章:

  • 2022-12-23
  • 2021-11-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
  • 2021-08-18
  • 2021-09-27
  • 2022-03-04
相关资源
相似解决方案