【问题标题】:How to respond to a specific client when accepting a connection with the Winsock control接受与 Winsock 控件的连接时如何响应特定客户端
【发布时间】:2014-09-13 17:34:48
【问题描述】:

我一直在构建聊天客户端服务器/客户端应用程序。除了一件事我似乎无法弄清楚之外,我已经让大多数事情都运作良好。当客户端尝试连接到服务器时,我希望服务器检查列表框以查看用户是否存在。如果用户不存在,则照常进行,但如果确实存在,则将数据包或其他内容发送回该客户端,仅说明用户名已被使用,请选择另一个。

我想到了几种方法,但不确定它们是否是最好的方法。

  1. 在单独的端口上创建第二个 Winsock 控件让客户端连接到该端口首先检查用户名,然后连接到另一个端口以加入聊天。我可以看到这种方法的唯一问题是,如果多个人同时连接到这个 Winsock,我仍然会遇到与使用原始 Winsock 相同的问题。

  2. 使用当前请求连接的索引号和另一个保存用户名的索引号创建变量。检查用户列表后,使用变量来识别客户端并将数据仅发送到该客户端。

我是 Winsock 编程的新手,所以这可能很容易,但我却把它变得非常困难。我需要一些见解,也许一些例子会很好。

【问题讨论】:

    标签: vb6 winsock


    【解决方案1】:

    要对套接字做任何事情,您必须先接受它。通常,您有一个侦听套接字和一个“备用”套接字列表。当你接受一个连接时,你将它传递给一个备用套接字,然后它只为那个客户端做任何工作。

    TL:DR;接受所有连接,然后当您收到名称时,根据需要做出响应,可能断开连接或要求他们重试。

    【讨论】:

    • 感谢您的回答。我让它变得更加困难,然后它需要我自己解决。 Winsock(Index) 始终是刚刚连接的当前袜子。我没有创建新的winsock 来进行检查,而是对当前的winsock 进行了检查,然后将回复发送回winsock(index)。我不知道为什么我总是想太多。让事情变得比他们需要的更复杂。
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多