Socket.Connected 屬性

定義

取得值,指出上一個 SocketSend 作業是否將 Receive 連接至遠端主機。

C#
public bool Connected { get; }

屬性值

如果最近一次的作業是將 Socket 連接到遠端資源,則為 true,否則,即為 false

範例

下列程式代碼範例會連線到遠端端點、檢查 Connected 屬性,以及檢查連線的目前狀態。

C#
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);

// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
    byte [] tmp = new byte[1];

    client.Blocking = false;
    client.Send(tmp, 0, 0);
    Console.WriteLine("Connected!");
}
catch (SocketException e)
{
    // 10035 == WSAEWOULDBLOCK
    if (e.NativeErrorCode.Equals(10035))
    {
        Console.WriteLine("Still Connected, but the Send would block");
    }
    else
    {
        Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
    }
}
finally
{
    client.Blocking = blockingState;
}

Console.WriteLine("Connected: {0}", client.Connected);

備註

屬性 Connected 會從最後一個 I/O 作業開始取得 的連接 Socket 狀態。 當傳回 false時, Socket 表示從未連接,或已不再連接。 Connected不是安全線程;當 與另一個線程中斷連線時Socket,可能會在中止作業之後傳回 true

屬性的值 Connected 會反映連線狀態,如同最近一次的作業一樣。 如果您需要判斷連線的目前狀態,請建立非封鎖、零位元組的 Send 呼叫。 如果呼叫成功傳回或擲回 WAEWOULDBLOCK 錯誤碼, (10035) ,則套接字仍已連線;否則,套接字已不再連線。

如果您在 UDP) 套接字 (使用者數據報通訊協定上呼叫 Connect ,屬性 Connected 一律會傳回 true;不過,此動作不會變更 UDP 固有的無連線本質。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0