TcpClient推荐发送间隔
本文关键字:TcpClient | 更新日期: 2023-09-27 18:01:22
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中发送此消息是否代价高昂?但是,如果我只是偶尔检查一下,那么同时提示这条消息的数百或数千个tcpclient是否会付出代价呢?
如果不发送数据并接收应答或等待TCP堆栈超时,则无法确定TCP连接是否仍然存活。所以你的代码现在不能可靠地检测连接问题。
可能解决这个问题的最好方法是让远程方回复一个确认。
总是在每个TcpClient中发送此消息是否代价高昂?
这样做的成本是发送和接收一个小数据包。它还会消耗一点CPU时间。你想要什么答案?成本取决于服务器拥有多少资源以及正在进行的其他操作。我不能告诉你这对你的情况来说是否太贵了。
度量性能成本。这似乎并不难。