【问题标题】:How to "unbind" a socket programmatically?如何以编程方式“取消绑定”套接字?
【发布时间】:2011-06-05 02:45:37
【问题描述】:

1) 在进程结束之前,套接字似乎不会与 LocalEndPoint 解除绑定。
2)我已经尝试过其他问题的解决方案,也尝试过等待一分钟 - 无济于事。
3)目前我已经尝试以下方法来摆脱套接字及其连接:

public static void killUser(User victim)  
    {  
        LingerOption lo = new LingerOption(false, 0);  
victim.connectedSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.Linger,     lo);  
        victim.connectedSocket.Shutdown(SocketShutdown.Both);  
        victim.connectedSocket.Disconnect(true);  
        victim.connectedSocket.Close();  
        clients.RemoveAt(victim.ID);  
    }  

4) 经过一番谷歌搜索,我似乎无法取消绑定端口,因此如果我有足够数量的连接客户端,我最终会用完端口来监听。

【问题讨论】:

    标签: c# sockets shutdown ports unbind


    【解决方案1】:

    我怀疑您将已连接客户端的套接字与服务器套接字混淆了。

    您的服务器套接字是侦听特定端口上的传入连接的一个。您在该函数中关闭的套接字是您通往(可能有许多)远程连接之一的管道。

    要“解除绑定端口”,您需要关闭/关闭 服务器 套接字。

    更新以消除一些混乱

    您应该有一个调用 .Bind(EndPoint) 的“服务器”套接字,然后调用 .Listen()。这是您要关闭/关闭以“解除绑定”并释放端口以供以后使用的套接字。

    然后,每当您的“服务器”套接字接受新连接时,您就会获得多个“客户端”套接字的引用。这些都可以毫无问题地绑定到同一个端口。要关闭其中一个连接并断开您的客户端,请执行您现在正在执行的操作。您实际上可以将方法缩减为:

    • 关机
    • 关闭
    • 从您的列表中删除

    断开连接,其余的都是不必要的。

    【讨论】:

    • 我只是想知道如何在用户不安全地断开连接或什至只是断开连接时终止连接并释放端口。编辑:我可能想要关闭的套接字将是许多客户端套接字之一。 ATM 我有一个侦听潜在客户端的套接字,然后客户端收到一个端口号以重新连接:考虑到每个端口只能连接 1 个客户端/每个端口 1 个套接字。 (我认为)
    • 您的“一个监听潜在客户的套接字”在某个时候调用了 .Bind() ,对吗?您在哪里指定了 EndPoint(应该有一个与之关联的端口)?该端口是您的客户端应该连接的单个端口(并且您可以在该单个端口上连接许多客户端套接字)。你不能做的是启动一个第二个服务器套接字监听同一个端点上的连接,直到你解除你的第一个服务器与它的绑定(通过关闭第一个套接字)。
    • 哇等一下,我刚刚阅读了您的上述编辑。当客户端连接到 5900 时,为什么要将它们重新连接到 5901?没必要,让他们保持在 5900 上。
    • 嗯,我重新阅读了我的代码,导致它崩溃的行是 tempSock.Bind(IPEP);这是因为我想重用一个端口。我想知道是否可以重用一个端口 - 它应该是(我假设)......“那是不必要的,只需将它们保留在 5900 上”我想将 5900 作为最初连接到的端口:其余为用于实际数据传输的端口...如果我不为所有客户端重新分配端口,那么客户端将不得不手动检查哪些端口正在使用等。
    • 您应该只调用 Bind 一次,并且只能由您的服务器套接字(您也用来调用 Listen 的那个)调用。一旦您的客户端(任意数量)连接到 5900,就无需在任何地方重新连接它们。您可以一次将所有这些都放在 5900 上。如果您确实想重新连接,则必须设置额外的服务器套接字侦听其他端口。
    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多