MSDN帮助文件表明,在检查TcpClient的连接状态之前,应始终向客户端发送消息。我已经做了,效果很好。
问题是,从长远来看,多个客户(数百,数千)的成本是多少?目前我有我正在测试的示例代码:
Array.Clear( myBufferW , 0 , NetworkVars.TcpBufferWriteSize );
ByteBuffer.Buffer_SetOffset( 0 );
ByteBuffer.Buffer_Writeu8( ref myBufferW , ( byte ) 253 );
TcpPackets.TcpPacketSend( myStream , myBufferW , ByteBuffer.Buffer_GetOffset() );
if ( myClient.Connected == false ) {
myThreading = false;
}
总是在每个TcpClient中发送此消息会花费多少?如果我每隔一段时间只进行一次这样的检查,那么数百或数千个TcpClients同时提示这个消息会花费多少钱?
答案 0 :(得分:0)
如果没有发送数据并接收回复或等待TCP堆栈的超时,您无法确定TCP连接是否仍处于活动状态。因此,您的代码目前无法可靠地检测到连接问题。
解决此问题的最佳方法可能是让远程方回复并确认。
总是在每个TcpClient中发送此消息会很昂贵吗?
这样做的代价是发送和接收一个小包。它还需要一点CPU时间。你在这里期待什么答案?成本高昂取决于服务器拥有多少资源以及还有什么其他资源。我不能告诉你这是否太贵贵。
衡量绩效成本。在这里做起来似乎并不特别。