如何拒绝C#中的连接尝试?

问题描述

| 我有一个监听连接的套接字。我想做的是尝试连接时具有接受/拒绝选项。这是我的代码
private void StartListening()
{
    while (running)
    {
        AcceptingSocket.Listen(100);
        Socket client = AcceptingSocket.Accept();

        if (IncomingConnection!= null)
        {
            TcpEventArgs eventArgs = new TcpEventArgs(client);
            IncomingConnection(eventArgs);
        }
    }
}
ѭ1可以检查用户是否要接受或拒绝连接吗?     

解决方法

正如@Blindy所说的,您需要接受传入的连接,如果您决定不想继续该连接,则将其关闭。在
Accept
返回之前,您没有对
Socket
的引用,因此无法做任何事情来让您根据客户端(例如检查提供的凭据或连接的源地址)。 从客户端的角度来看,一旦他们连接到“ 4”插槽,便建立了连接(操作系统已将连接建立到监听端口,然后在“ 2”呼叫中移交给您)。您不能伪造\'Connection Refused /对方主动拒绝处于侦听状态的
Socket
上的连接类型错误。因此,
Accept
,然后是
Close
,在客户端看来就像as2ѭ中止连接的某种方式一样。 如果您出于编程原因不允许更多连接(例如一次只需要一个客户端),则可以在接受连接后关闭“ 4”套接字,但这通常是一个坏主意。     ,您(几乎)总是想要“ 2”连接,因为是否连接的决定只能基于客户端发送的信息(用户名,密码等)来进行。 因此,在建立连接后,请运行授权模块以收集身份验证信息,并根据该信息确定是否在
client
上调用
Close
(在您的示例中)。