2014-09-13 50 views
1

我一直在构建聊天客户端服务器/客户端应用程序。除了我似乎无法想象的一件事外,我得到的大部分工作都很好。当客户端尝试连接到服务器时,我希望服务器检查列表框以查看用户是否存在。如果用户不存在,请按正常方式继续,但如果确实存在,则发送一个数据包或其他东西返回给客户端,只说用户名已被占用,请选择另一个。如何在接受与Winsock控件的连接时响应特定客户端

我曾考虑过这样做的几种方法,但不知道它们是否是最好的方法。

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

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

我对Winsock编程很陌生,所以这可能是一件非常简单的事情,我非常努力。我需要一些见解,也许甚至有些例子会很好。

回答

0

要使用套接字执行任何操作,必须先接受它。一般来说,您只有一个侦听套接字和一个“备用”套接字列表。当你接受一个连接时,你将它传递给其中一个备用套接字,然后它只为该客户端做任何工作。

TL:DR;接受所有连接,然后当您收到该名称时,根据需要进行响应,可能会断开连接或要求他们再试一次。

+0

谢谢你的回答。我让自己变得越来越难,那么我需要自己去想。 Winsock(索引)永远是当前连接的袜子。而不是创建一个新的winsock来做检查,我只是对当前的winsock进行检查,然后将回复发回给winsock(索引)。我不知道为什么我总是在想事情。让事情更复杂,然后他们需要它。 – FrostByte 2014-09-16 17:28:12

相关问题