C# 从实际数据返回中排序客户端心跳?

C# 从实际数据返回中排序客户端心跳?,c#,tcp,heartbeat,C#,Tcp,Heartbeat,简而言之,我使用tcplistener/tcpclient设置了服务器,它有几十台客户机。一切都很好,只是我还没有设置一个系统来检测客户端是否断开了连接。我想使用心跳(周期性发送的数据包)来显示客户端仍然存在。不幸的是,发生的情况是服务器有一个名为的等待接收块,以便它可以从客户端获取实际数据,但它接收的是心跳。有没有办法在同一个端口上设置另一个专门查找心跳的接收-谢谢。一种常见的方法是将数据包定义为特定类型,因此服务器数据包接收代码只需检查类型并适当处理即可。 i、 e 当您添加代码时,我可以给

简而言之,我使用tcplistener/tcpclient设置了服务器,它有几十台客户机。一切都很好,只是我还没有设置一个系统来检测客户端是否断开了连接。我想使用心跳(周期性发送的数据包)来显示客户端仍然存在。不幸的是,发生的情况是服务器有一个名为的等待接收块,以便它可以从客户端获取实际数据,但它接收的是心跳。有没有办法在同一个端口上设置另一个专门查找心跳的接收-谢谢。

一种常见的方法是将数据包定义为特定类型,因此服务器数据包接收代码只需检查类型并适当处理即可。 i、 e

当您添加代码时,我可以给出一个更好的示例

更新:

根据我们在评论中的讨论,您可以简单地创建一个单独的线程来处理您的心跳数据包。在此线程中,套接字接收代码将通过首先检查类型来忽略除心跳数据包以外的任何内容


您还可以在同一端口上创建另一个线程来容纳套接字接收,以处理数据。在这种情况下,它只会忽略接收到的任何心跳数据包。

一种常见的方法是将数据包定义为特定类型,因此服务器数据包接收代码只需检查类型并进行适当处理。 i、 e

当您添加代码时,我可以给出一个更好的示例

更新:

根据我们在评论中的讨论,您可以简单地创建一个单独的线程来处理您的心跳数据包。在此线程中,套接字接收代码将通过首先检查类型来忽略除心跳数据包以外的任何内容


您还可以在同一端口上创建另一个线程来容纳套接字接收,以处理数据。在这种情况下,它只会忽略接收到的任何心跳数据包。

您能告诉我们您到目前为止尝试的代码吗?@peacemaker它有点长(超过1000行);您是否需要我解释(或在此处发布)我的代码中的任何方面来帮助您回答?只是与问题相关的部分。如果代码仍然太多,请尝试创建一个简单的示例来说明主要问题。@peacemaker稍等,我将编辑一个快速示例。具体来说,您可以向我们展示服务器数据包接收代码的外观。可能你可以在那里检查数据包的类型,如果是心跳数据包,就具体处理,否则就当作数据处理。你能给我们你迄今为止尝试过的代码吗?@peacemaker它有点长(超过一千行);您是否需要我解释(或在此处发布)我的代码中的任何方面来帮助您回答?只是与问题相关的部分。如果代码仍然太多,请尝试创建一个简单的示例来说明主要问题。@peacemaker稍等,我将编辑一个快速示例。具体来说,您可以向我们展示服务器数据包接收代码的外观。可能您只需检查数据包类型,如果它是心跳数据包,请专门处理它,否则将其视为数据。
if ( packet.type == PacketTypes.HeartBeat )
    //keep alive the client
else
    //it's data (or another packet)