0
我正在使用c#套接字異步模式。TCPIP服務器單連接
從服務器的角度來看,我需要在我的應用程序中只提供一個連接。一旦有人連接,我想拒絕任何更多的連接請求。
此外,服務器僅用於連接到單個客戶端。當通信完成時,服務器必須重新啓動。
但從我讀過的話題來看,不可能關閉beginaccept。
我想了解如何解決這種情況的一些想法。
我正在使用c#套接字異步模式。TCPIP服務器單連接
從服務器的角度來看,我需要在我的應用程序中只提供一個連接。一旦有人連接,我想拒絕任何更多的連接請求。
此外,服務器僅用於連接到單個客戶端。當通信完成時,服務器必須重新啓動。
但從我讀過的話題來看,不可能關閉beginaccept。
我想了解如何解決這種情況的一些想法。
通常,在BeginAccept
異步回調中,您將再次撥打BeginAccept
,以便可以接受另一個連接。但是,如果您不想允許其他連接,則可以省略此步驟。爲了及時拒絕連接,考慮在回調中關閉監聽套接字。在這種情況下,即使偵聽套接字已關閉,接受的Socket
仍將保持打開狀態。
class SocketTest
{
private Socket m_Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
public void Test()
{
m_Listener.Bind(new IPEndPoint(IPAddress.Loopback, 8888));
m_Listener.Listen(16);
m_Listener.BeginAccept(AcceptCallback, null);
}
private void AcceptCallback(IAsyncResult ar)
{
Socket s = m_Listener.EndAccept(ar);
m_Listener.Close();
/* Use s here. */
}
}
完美!感謝您幫助我理解異步套接字的範圍。 – iTEgg 2010-01-15 00:37:22