【问题标题】:C# Socket.Listen(MAX_CONNECTIONS);C# Socket.Listen(MAX_CONNECTIONS);
【发布时间】:2010-01-13 22:06:55
【问题描述】:

我需要一些有关 socket.listen 的帮助。

我的 max_connections 设置为 1。但即使在一个客户端连接后,如果另一个客户端尝试连接,客户端会说它已连接,尽管服务器没有报告任何新内容。

我的应用位于一台服务器和一台客户端之间。如果任何其他客户端在已经存在连接时尝试连接,我希望该连接被拒绝。

请提供一些想法。

非常感谢。

【问题讨论】:

  • 这可能是客户端错误吗?也许客户端报告说它没有连接?

标签: sockets connection listen


【解决方案1】:

您没有提供任何代码,但您的帖子标题引用了Socket.Listen。给Socket.Listen 的参数不是最大连接数,而是传入连接“积压”的大小。

这意味着当有人尝试连接,但您的服务器尚未Accept()ed 连接时,这些客户端位于“积压”队列中。您已将大小设置为 1,因此一次只能有 1 个客户端等待连接。

此参数不会影响您的应用程序允许的连接总数。

【讨论】:

  • 好的。这就说得通了。我以为我对听有错误的想法。一旦我建立了连接,我就可以关闭监听套接字并且应该照顾它,我认为..
【解决方案2】:

您可以使用 TCPClient 上的 IsConnected 属性来检查连接是否已经存在并做出决定。

【讨论】:

    【解决方案3】:

    我建议您接受新的客户端连接,但在访问包装服务器之前立即获取semaphor,并在访问后立即释放它。这种方法允许您控制有多少客户端同时使用包装的服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      相关资源
      最近更新 更多