我相信这有一个简单的解决方法,但现在我似乎无法找到一个优雅的解决方案。我已经构建了一个接受多个客户端并处理它们的ASync C#服务器应用程序,但要继续操作,我需要能够确定哪些客户端连接到了我的服务器(将只有两个客户端执行不同的操作)。C#中的异步套接字 - 了解您的客户端
当我的程序接受这些客户端时,我希望服务器知道客户端地址,并指出哪个客户端可能存储在一个小列表中。
所以我猜我在问什么,当客户端连接时,发送一个预定义的消息到服务器,让它知道客户端应用程序到哪个地址的简单方法?
谢谢
我相信这有一个简单的解决方法,但现在我似乎无法找到一个优雅的解决方案。我已经构建了一个接受多个客户端并处理它们的ASync C#服务器应用程序,但要继续操作,我需要能够确定哪些客户端连接到了我的服务器(将只有两个客户端执行不同的操作)。C#中的异步套接字 - 了解您的客户端
当我的程序接受这些客户端时,我希望服务器知道客户端地址,并指出哪个客户端可能存储在一个小列表中。
所以我猜我在问什么,当客户端连接时,发送一个预定义的消息到服务器,让它知道客户端应用程序到哪个地址的简单方法?
谢谢
有很多方法。
最简单的方法之一是为每个客户端应用程序都有不同的端口。另一种方式是为了“连接”(在TCP握手之后)在交换任何数据之前发送标识应用程序的消息。另一种选择是将标题添加到每个请求/回复中,说明应用程序并存储它。
您可以免费通过套接字发送所有类型的数据。
为了解决这个问题,在客户端和服务器之间创建一些协议。
例如,在连接时发送第一条消息以识别客户端到服务器。 从那里继续与这两者之间的正常交谈。
服务器可以接受消息并存储显示它,甚至在第一条消息不包含约定信息时拒绝客户端。
你说的是识别客户端的内部使用,还是说你不知道从哪个客户端例如'EndReceive()'来了?如果后者是这种情况:使用一个状态对象('IAsyncResult.AsyncState'),其中包含您的客户端类,其中包含您在调用'BeginReceive()'时提供的连接套接字。 – CodeCaster
对于内部使用,谢谢你的回复。 – Nate