【问题标题】:Socket Server: Manage client connectionsSocket Server:管理客户端连接
【发布时间】:2010-01-25 13:19:06
【问题描述】:

我想知道如何为套接字服务器实现客户端管理。

我遇到的情况是,我想知道客户端是刚刚重新连接还是新客户端。我知道,不应该这样。不过,这是一个相当临时的服务器,只能使用几个小时。

我正在考虑让每个客户端将自己的 GUID 传递给服务器。一旦服务器“识别”了一个客户端,它就可以摆脱该客户端之前持有的连接。

您会如何处理这个问题?还是这种方式完全不合适?

谢谢!

【问题讨论】:

    标签: c# .net sockets asyncsocket


    【解决方案1】:

    如果您使用 TCP/IP,则可以使用 IP 地址和端口来唯一识别客户端。和 您可以在断开连接事件后摆脱连接。 如果 IP 地址和端口不足以唯一识别客户端,则可以使用 GUID。在许多情况下,再次使用 TCP/IP,您可以在断开连接事件后摆脱连接。

    【讨论】:

    • 谢谢,我更愿意遵循 GUID 方法。只有当服务器被告知每个客户端有什么 GUID 时,它才有意义。因此,我需要从 Socket 派生并添加我的 GUID。但是后来我在处理来自 Socket 的所有方法时遇到了麻烦,这些方法返回了一个 Socket 的实例。
    • 在大多数情况下,您应该更喜欢组合而不是继承。我的意思是,您不应该从 Socket 继承,而应该创建自己的类,它包含 Socket 和 GUID。或者您的服务器类可能包含以 Socket 作为键和 GUID 作为值的字典。
    • 好的,我明白了。不过,我的目标是在与服务器连接(使用 GUID)时识别每个客户端。我想我可以在连接时将 GUID 作为第一条消息发送。我看不出有任何其他方法可以做到这一点,你呢?感谢您的意见!
    • 例如在 WCF 中,对于每个会话也绑定了 GUID,所以我认为这或多或少是常见的方法。
    猜你喜欢
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多