Socket 類


構造函數
 
 
  名稱 說明
System_CAPS_pubmethod Socket(AddressFamily, SocketType, ProtocolType)

新實例初始化 Socket 類使用指定的地址族、 套接字類型和協議。

System_CAPS_pubmethod Socket(SocketInformation)

新實例初始化 Socket 類使用返回值的指定的值 DuplicateAndClose

System_CAPS_pubmethod Socket(SocketType, ProtocolType)

新實例初始化 Socket 類使用指定的套接字類型和協議。

屬性
 
 
  名稱 說明
System_CAPS_pubproperty AddressFamily

獲取的地址族 Socket。

System_CAPS_pubproperty Available

獲取已經從網絡接收且可供讀取的數據量。

System_CAPS_pubproperty Blocking

獲取或設置一個值,該值指示是否 Socket 處於阻塞模式。

System_CAPS_pubproperty Connected

獲取一個值,該值指示是否 Socket 連接到遠程主機從上次以來 Send 或 Receive 操作。

System_CAPS_pubproperty DontFragment

獲取或設置 Boolean 值,該值指定是否 Socket 允許 Internet 協議 (IP) 的數據報進行分片。

System_CAPS_pubproperty DualMode

獲取或設置一個 Boolean 值,該值指定 Socket 是否是用於 IPv4 和 IPv6 的雙模式套接字。

System_CAPS_pubproperty EnableBroadcast

獲取或設置 Boolean 值,該值指定是否 Socket 可以發送或接收廣播的數據包。

System_CAPS_pubproperty ExclusiveAddressUse

獲取或設置 Boolean 值,該值指定是否 Socket 僅允許一個進程綁定到端口。

System_CAPS_pubproperty Handle

獲取操作系統句柄 Socket。

System_CAPS_pubproperty IsBound

獲取一個值,該值指示是否 Socket 綁定到特定本地端口。

System_CAPS_pubproperty LingerState

獲取或設置一個值,指定是否 Socket 將延遲發送所有掛起的數據以嘗試關閉套接字。

System_CAPS_pubproperty LocalEndPoint

獲取本地終結點。

System_CAPS_pubproperty MulticastLoopback

獲取或設置一個值,指定是否傳出多播的數據包將傳輸到發送應用程序。

System_CAPS_pubproperty NoDelay

獲取或設置 Boolean 值,該值指定是否流 Socket 使用 Nagle 算法。

System_CAPS_pubpropertySystem_CAPS_static OSSupportsIPv4

指示基礎操作系統和網絡適配器是否支持 Internet 協議版本 4 (IPv4)。

System_CAPS_pubpropertySystem_CAPS_static OSSupportsIPv6

指示基礎操作系統和網絡適配器是否支持 Internet 協議版本 6 (IPv6)。

System_CAPS_pubproperty ProtocolType

獲取的協議類型 Socket。

System_CAPS_pubproperty ReceiveBufferSize

獲取或設置一個值,指定的接收緩沖區的大小 Socket。

System_CAPS_pubproperty ReceiveTimeout

獲取或設置一個值,指定的后的時間量同步 Receive 調用將會超時。

System_CAPS_pubproperty RemoteEndPoint

獲取遠程終結點。

System_CAPS_pubproperty SendBufferSize

獲取或設置一個值,指定發送緩沖區的大小 Socket。

System_CAPS_pubproperty SendTimeout

獲取或設置一個值,指定的后的時間量同步 Send 調用將會超時。

System_CAPS_pubproperty SocketType

獲取 Socket 的類型。

System_CAPS_pubpropertySystem_CAPS_static SupportsIPv4

已過時。 獲取一個值,該值指示 IPv4 支持是否可用且已啟用當前主機上。

System_CAPS_pubpropertySystem_CAPS_static SupportsIPv6

已過時。 獲取一個值,該值指示框架是否支持 IPv6 對於某些已過時 Dns 成員。

System_CAPS_pubproperty Ttl

獲取或設置一個值,指定發送的 Internet 協議 (IP) 數據包的生存時間 (TTL) 值 Socket。

System_CAPS_pubproperty UseOnlyOverlappedIO

指定套接字是否應僅使用重疊的 I/O 模式。

方法
 
 
  名稱 說明
System_CAPS_pubmethod Accept()

創建一個新 Socket 為新創建的連接。

System_CAPS_pubmethod AcceptAsync(SocketAsyncEventArgs)

開始一個異步操作以接受傳入的連接嘗試。

System_CAPS_pubmethod BeginAccept(AsyncCallback, Object)

開始一個異步操作以接受傳入的連接嘗試。

System_CAPS_pubmethod BeginAccept(Int32, AsyncCallback, Object)

開始異步操作以接受傳入的連接嘗試並接收第一個客戶端應用程序所發送的數據塊。

System_CAPS_pubmethod BeginAccept(Socket, Int32, AsyncCallback, Object)

開始異步操作以接受傳入的連接嘗試從指定的套接字並接收第一個客戶端應用程序所發送的數據塊。

System_CAPS_pubmethod BeginConnect(EndPoint, AsyncCallback, Object)

開始一個對遠程主機連接的異步請求。

System_CAPS_pubmethod BeginConnect(IPAddress, Int32, AsyncCallback, Object)

開始一個對遠程主機連接的異步請求。 主機由 IPAddress 和端口號指定。

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

開始一個對遠程主機連接的異步請求。 主機由 IPAddress 數組和端口號指定。

System_CAPS_pubmethod BeginConnect(String, Int32, AsyncCallback, Object)

開始一個對遠程主機連接的異步請求。 主機由主機名和端口號指定。

System_CAPS_pubmethod BeginDisconnect(Boolean, AsyncCallback, Object)

開始一個異步請求來斷開與遠程終結點的連接。

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

開始異步接收數據從連接 Socket。

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

開始異步接收數據從連接 Socket。

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

開始異步接收數據從連接 Socket。

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

開始異步接收數據從連接 Socket。

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

開始以異步方式從指定的網絡設備上接收數據。

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

開始異步接收指定的數據的字節數,到使用指定的數據緩沖區的指定位置 SocketFlags, ,並將終結點和數據包信息存儲...

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

將數據異步發送到連接 Socket。

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

將數據異步發送到連接 Socket。

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

將數據異步發送到連接 Socket。

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

將數據異步發送到連接 Socket。

System_CAPS_pubmethod BeginSendFile(String, AsyncCallback, Object)

將文件發送 fileName 到連接 Socket 對象使用 UseDefaultWorkerThread 標志。

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

文件和數據緩沖區將異步發送到連接 Socket 對象。

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

以異步方式將數據發送到特定的遠程主機。

System_CAPS_pubmethod Bind(EndPoint)

將相關聯 Socket 與本地終結點。

System_CAPS_pubmethodSystem_CAPS_static CancelConnectAsync(SocketAsyncEventArgs)

取消對遠程主機連接的異步請求。

System_CAPS_pubmethod Close()

關閉 Socket 連接和釋放所有關聯資源。

System_CAPS_pubmethod Close(Int32)

關閉 Socket 連接並釋放所有與指定超時關聯的資源,以允許要發送的數據排隊。

System_CAPS_pubmethod Connect(EndPoint)

建立與遠程主機的連接。

System_CAPS_pubmethod Connect(IPAddress, Int32)

建立與遠程主機的連接。 主機指定的 IP 地址和端口號。

System_CAPS_pubmethod Connect(IPAddress[], Int32)

建立與遠程主機的連接。 主機指定的 IP 地址數組和端口號。

System_CAPS_pubmethod Connect(String, Int32)

建立與遠程主機的連接。 主機由主機名和端口號指定。

System_CAPS_pubmethod ConnectAsync(SocketAsyncEventArgs)

開始對到遠程主機的連接的異步請求。

System_CAPS_pubmethodSystem_CAPS_static ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

開始對到遠程主機的連接的異步請求。

System_CAPS_pubmethod Disconnect(Boolean)

關閉套接字連接,並允許重用套接字。

System_CAPS_pubmethod DisconnectAsync(SocketAsyncEventArgs)

開始一個異步請求來斷開與遠程終結點的連接。

System_CAPS_pubmethod Dispose()

釋放 Socket 類的當前實例所使用的所有資源。

System_CAPS_protmethod Dispose(Boolean)

釋放由 Socket 使用的非托管資源,並可根據需要釋放托管資源。

System_CAPS_pubmethod DuplicateAndClose(Int32)

復制目標進程的套接字引用,並關閉此進程的套接字。

System_CAPS_pubmethod EndAccept(Byte[], IAsyncResult)

異步接受傳入的連接嘗試,並創建一個新 Socket 對象以處理遠程主機通信。 此方法返回包含傳輸的初始數據的緩沖區。

System_CAPS_pubmethod EndAccept(Byte[], Int32, IAsyncResult)

異步接受傳入的連接嘗試,並創建一個新 Socket 對象以處理遠程主機通信。 此方法返回包含初始數據和傳輸的字節數的緩沖區。

System_CAPS_pubmethod EndAccept(IAsyncResult)

異步接受傳入的連接嘗試,並創建一個新 Socket 來處理遠程主機通信。

System_CAPS_pubmethod EndConnect(IAsyncResult)

結束掛起的異步連接請求。

System_CAPS_pubmethod EndDisconnect(IAsyncResult)

結束掛起的異步斷開連接請求。

System_CAPS_pubmethod EndReceive(IAsyncResult)

結束掛起的異步讀取。

System_CAPS_pubmethod EndReceive(IAsyncResult, SocketError)

結束掛起的異步讀取。

System_CAPS_pubmethod EndReceiveFrom(IAsyncResult, EndPoint)

結束掛起的異步讀取從特定的終結點。

System_CAPS_pubmethod EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

結束掛起的異步讀取從特定的終結點。 此方法還顯示有關比數據包的詳細信息 EndReceiveFrom

System_CAPS_pubmethod EndSend(IAsyncResult)

結束掛起的異步發送。

System_CAPS_pubmethod EndSend(IAsyncResult, SocketError)

結束掛起的異步發送。

System_CAPS_pubmethod EndSendFile(IAsyncResult)

結束掛起的異步發送的文件。

System_CAPS_pubmethod EndSendTo(IAsyncResult)

結束掛起的異步發送到特定位置。

System_CAPS_pubmethod Equals(Object)

確定指定的對象是否等於當前對象。(繼承自 Object。)

System_CAPS_protmethod Finalize()

釋放 Socket 類使用的資源。(覆蓋 Object.Finalize()。)

System_CAPS_pubmethod GetHashCode()

作為默認哈希函數。(繼承自 Object。)

System_CAPS_pubmethod GetSocketOption(SocketOptionLevel, SocketOptionName)

返回指定的值 Socket 選項時,表示為一個對象。

System_CAPS_pubmethod GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

返回指定 Socket 選項設置,表示為字節數組。

System_CAPS_pubmethod GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

返回指定的值 Socket 數組中的選項。

System_CAPS_pubmethod GetType()

獲取當前實例的 Type。(繼承自 Object。)

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

設置為低級別操作模式 Socket 使用數字控制代碼。

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

設置為低級別操作模式 Socket 使用 IOControlCode 枚舉來指定控制代碼。

System_CAPS_pubmethod Listen(Int32)

位置 Socket 處於偵聽狀態。

System_CAPS_protmethod MemberwiseClone()

創建當前 Object 的淺表副本。(繼承自 Object。)

System_CAPS_pubmethod Poll(Int32, SelectMode)

確定的狀態 Socket。

System_CAPS_pubmethod Receive(Byte[])

從綁定接收數據 Socket 到接收緩沖區中。

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

從綁定接收指定的數目的字節 Socket 到接收緩沖區的指定偏移量的位置,使用指定 SocketFlags

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

從綁定接收數據 Socket 存入接收緩沖區,使用指定 SocketFlags

System_CAPS_pubmethod Receive(Byte[], Int32, SocketFlags)

從綁定接收指定的數目的數據的字節 Socket 存入接收緩沖區,使用指定 SocketFlags

System_CAPS_pubmethod Receive(Byte[], SocketFlags)

從綁定接收數據 Socket 存入接收緩沖區,使用指定 SocketFlags

System_CAPS_pubmethod Receive(IList<ArraySegment<Byte>>)

從綁定接收數據 Socket 的接收緩沖區的列表中。

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

從綁定接收數據 Socket 入接收緩沖區列表中,使用指定 SocketFlags

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

從綁定接收數據 Socket 入接收緩沖區列表中,使用指定 SocketFlags

System_CAPS_pubmethod ReceiveAsync(SocketAsyncEventArgs)

開始一個異步請求,以便接收來自連接的數據 Socket 對象。

System_CAPS_pubmethod ReceiveFrom(Byte[], EndPoint)

到數據緩沖區中接收數據報並存儲終結點。

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

使用指定的 SocketFlags 將指定的數據字節數接收到數據緩沖區的指定位置,並存儲終結點。

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

將指定的數目的字節接收到的數據緩沖區,使用指定 SocketFlags, ,並將存儲終結點。

System_CAPS_pubmethod ReceiveFrom(Byte[], SocketFlags, EndPoint)

接收到數據緩沖區,使用指定的數據報 SocketFlags, ,並將存儲終結點。

System_CAPS_pubmethod ReceiveFromAsync(SocketAsyncEventArgs)

開始以異步方式從指定的網絡設備上接收數據。

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

接收到指定數據緩沖區,使用指定的位置指定的數據的字節數 SocketFlags, ,並將終結點和數據包信息存儲。

System_CAPS_pubmethod ReceiveMessageFromAsync(SocketAsyncEventArgs)

開始異步接收指定的數據的字節數,到使用指定的數據緩沖區中的指定位置 SocketAsyncEventArgs.SocketFlags, ,並將終結點和數據包信息存儲。

System_CAPS_pubmethodSystem_CAPS_static Select(IList, IList, IList, Int32)

確定一個或多個套接字的狀態。

System_CAPS_pubmethod Send(Byte[])

將數據發送到連接 Socket。

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

從指定偏移量開始,使用指定 SocketFlags,將指定的數據字節數發送到已連接的 Socket。

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

發送到已連接的指定的數據的字節數 Socket, ,按指定偏移量,從開始,使用指定 SocketFlags

System_CAPS_pubmethod Send(Byte[], Int32, SocketFlags)

發送到已連接的指定的數據的字節數 Socket, ,使用指定 SocketFlags

System_CAPS_pubmethod Send(Byte[], SocketFlags)

將數據發送到連接 Socket 使用指定 SocketFlags

System_CAPS_pubmethod Send(IList<ArraySegment<Byte>>)

列表中的一組緩沖區發送到連接 Socket。

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

列表中的一組緩沖區發送到連接 Socket, ,使用指定 SocketFlags

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

列表中的一組緩沖區發送到連接 Socket, ,使用指定 SocketFlags

System_CAPS_pubmethod SendAsync(SocketAsyncEventArgs)

將數據異步發送到連接 Socket 對象。

System_CAPS_pubmethod SendFile(String)

將文件發送 fileName 到連接 Socket 對象 UseDefaultWorkerThread傳輸標志。

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

通過指定的 TransmitFileOptions 值,將文件 fileName 和數據緩沖區發送到連接的 Socket 對象。

System_CAPS_pubmethod SendPacketsAsync(SocketAsyncEventArgs)

集合中的文件或在內存中數據緩沖區將異步發送到連接 Socket 對象。

System_CAPS_pubmethod SendTo(Byte[], EndPoint)

將數據發送到指定的終結點。

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

將指定的數據的字節數發送到指定的終結點,在緩沖區中的指定位置開始並使用指定 SocketFlags

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

將指定的數據的字節數發送到指定的終結點使用指定 SocketFlags

System_CAPS_pubmethod SendTo(Byte[], SocketFlags, EndPoint)

將數據發送到特定終結點使用指定 SocketFlags

System_CAPS_pubmethod SendToAsync(SocketAsyncEventArgs)

以異步方式將數據發送到特定的遠程主機。

System_CAPS_pubmethod SetIPProtectionLevel(IPProtectionLevel)

套接字設置 IP 保護級別。

System_CAPS_pubmethod SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

設置指定 Socket 到指定的選項 Boolean 值。

System_CAPS_pubmethod SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

設置指定 Socket 選項指定的值,表示為字節數組。

System_CAPS_pubmethod SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

設置指定 Socket 選項指定的整數值。

System_CAPS_pubmethod SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

設置指定 Socket 選項指定的值,表示為一個對象。

System_CAPS_pubmethod Shutdown(SocketShutdown)

禁用發送和接收的 Socket。

System_CAPS_pubmethod ToString()

返回表示當前對象的字符串。(繼承自 Object。)

 

 

示例
 
 

下面的代碼示例演示如何 Socket 類可以用於將數據發送到 HTTP 服務器並接收響應。 此示例中受到阻止,直到收到整個頁面。

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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM