2012-10-30 92 views
0

我相信这有一个简单的解决方法,但现在我似乎无法找到一个优雅的解决方案。我已经构建了一个接受多个客户端并处理它们的ASync C#服务器应用程序,但要继续操作,我需要能够确定哪些客户端连接到了我的服务器(将只有两个客户端执行不同的操作)。C#中的异步套接字 - 了解您的客户端

当我的程序接受这些客户端时,我希望服务器知道客户端地址,并指出哪个客户端可能存储在一个小列表中。

所以我猜我在问什么,当客户端连接时,发送一个预定义的消息到服务器,让它知道客户端应用程序到哪个地址的简单方法?

谢谢

+0

你说的是识别客户端的内部使用,还是说你不知道从哪个客户端例如'EndReceive()'来了?如果后者是这种情况:使用一个状态对象('IAsyncResult.AsyncState'),其中包含您的客户端类,其中包含您在调用'BeginReceive()'时提供的连接套接字。 – CodeCaster

+0

对于内部使用,谢谢你的回复。 – Nate

回答

1

有很多方法。

最简单的方法之一是为每个客户端应用程序都有不同的端口。另一种方式是为了“连接”(在TCP握手之后)在交换任何数据之前发送标识应用程序的消息。另一种选择是将标题添加到每个请求/回复中,说明应用程序并存储它。

1

您可以免费通过套接字发送所有类型的数据。

为了解决这个问题,在客户端和服务器之间创建一些协议。

例如,在连接时发送第一条消息以识别客户端到服务器。 从那里继续与这两者之间的正常交谈。

服务器可以接受消息并存储显示它,甚至在第一条消息不包含约定信息时拒绝客户端。