Socket.Disconnect(Boolean) 方法

定义

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

public:
 void Disconnect(bool reuseSocket);
public void Disconnect (bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)

参数

reuseSocket
Boolean

如果关闭当前连接后可以重用此套接字,则为 true;否则为 false

例外

Socket 对象已关闭。

尝试访问套接字时出错。

示例

下面的代码示例创建一个用于同步通信的套接字,并将一些数据发送到远程主机。 然后,它调用 来停止发送和接收活动,并Disconnect调用 Shutdown以关闭套接字连接。

IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

// Connect the socket to the remote end point.
client->Connect( ipEndPoint );

// Send some data to the remote device.
String^ data = "This is a string of data <EOF>";
array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
int bytesTransferred = client->Send( buffer );

// Write to the console the number of bytes transferred.
Console::WriteLine( "{0} bytes were sent.\n", bytesTransferred );

// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Disconnect( true );
if ( client->Connected )
      Console::WriteLine( "We're still connnected" );
else
      Console::WriteLine( "We're disconnected" );
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress  ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

Socket client = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);

// Connect the socket to the remote end point.
client.Connect(ipEndPoint);

// Send some data to the remote device.
string data = "This is a string of data <EOF>";
byte[] buffer = Encoding.ASCII.GetBytes(data);

int bytesTransferred =  client.Send(buffer);

// Write to the console the number of bytes transferred.
Console.WriteLine("{0} bytes were sent.\n", bytesTransferred);

// Release the socket.
client.Shutdown(SocketShutdown.Both);

client.Disconnect(true);
if (client.Connected)
    Console.WriteLine("We're still connnected");
else
    Console.WriteLine("We're disconnected");

注解

如果使用面向连接的协议,则可以使用此方法关闭套接字。 此方法结束连接并将 属性设置为 Connectedfalse。 但是,如果 reuseSockettrue,则可以重复使用套接字。

若要确保在套接字关闭之前发送和接收所有数据,应在调用 Disconnect 方法之前调用 Shutdown

如果需要在不首先调用 的情况下调用 DisconnectShutdown,可以将 选项设置为 DontLingerSocketfalse 并指定非零超时间隔,以确保发送排队等待传出传输的数据。 Disconnect 然后阻止,直到发送数据或指定的超时过期。 如果设置为 DontLingerfalse 并指定零超时间隔, Close 则释放连接并自动放弃传出排队数据。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,请参阅 Windows 套接字版本 2 API 错误代码 文档,了解错误的详细说明。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

适用于