Socket.Disconnect(Boolean) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
关闭套接字连接并允许重用套接字。
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
。 但是,如果 reuseSocket
为 true
,则可以重复使用套接字。
若要确保在套接字关闭之前发送和接收所有数据,应在调用 Disconnect 方法之前调用 Shutdown 。
如果需要在不首先调用 的情况下调用 DisconnectShutdown,可以将 选项设置为 DontLingerSocketfalse
并指定非零超时间隔,以确保发送排队等待传出传输的数据。
Disconnect 然后阻止,直到发送数据或指定的超时过期。 如果设置为 DontLingerfalse
并指定零超时间隔, Close 则释放连接并自动放弃传出排队数据。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,请参阅 Windows 套接字版本 2 API 错误代码 文档,了解错误的详细说明。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。