gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:33:22 27 4
gpt4 key购买 nike

我有一个监听连接的套接字。我想要做的是在尝试连接时有一个接受/拒绝选项。这是我的代码:

private void StartListening()
{
while (running)
{
AcceptingSocket.Listen(100);
Socket client = AcceptingSocket.Accept();

if (IncomingConnection!= null)
{
TcpEventArgs eventArgs = new TcpEventArgs(client);
IncomingConnection(eventArgs);
}
}
}

有没有办法让 .Accept 检查用户是想接受还是拒绝连接?

最佳答案

正如@Blindy 所说,您需要接受传入的连接,然后在您决定不想继续该连接时关闭它。直到 Accept返回,您没有对 Socket 的引用,因此无法根据客户端做出任何决定是否接受的操作(例如检查提供的凭据或连接的源地址)。

从客户的角度来看,一旦他们连接到 Listen ing socket,连接建立(连接由OS建立到监听端口,然后在Accept调用中交给你)。您不能在 Socket 上伪造“连接被拒绝/对方主动拒绝连接”类型错误即处于聆听状态。所以Accept , 其次是 Close , 对客户来说看起来是一样的,就好像有某种方法可以 Accept中止连接。

如果您有不允许更多连接的编程原因(例如您一次只需要一个客户端),那么您可以关闭 Listen在接受连接后调用套接字,但这通常是个坏主意。

关于c# - 如何拒绝 C# 中的连接尝试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com