新手仅有的200分,求大神解答C#局域网通讯的问题。
哈沙ki 2018-07-12 11:59:36 我用C# 写了个移动端局域网通讯的程序,遇到了发送延迟的问题。求大神帮忙解惑:
我的TcpClient的相关定义为:
TcpClient tcpClient = new TcpClient()
{
ReceiveBufferSize = 4096,
ReceiveTimeout = 0,
SendBufferSize = 4096,
SendTimeout = 0,
NoDelay = true
};
然后发送的方法如下:
public void SendTcpMessage(string msg)
{
NetworkStream stream = tcpClient.GetStream();
if (stream.CanWrite)
{
byte[] bytes = Encoding.UTF8.GetBytes(msg);
Profile.Begin("Send耗时");
stream.BeginWrite(bytes, 0, bytes.Length, OnSendCallback, stream);
}
}
void OnSendCallback(IAsyncResult ar)
{
Profile.End("Send耗时");
NetworkStream stream = (NetworkStream)ar.AsyncState;
stream.EndWrite(ar);
}
先来说下我目前的真机测试情况:
以调用SendTcpMessage的频率每秒20次,每次发送数据大小为12字节。
1、用15年的OPPO R7测试,发送耗时会在1ms 到20000ms(20s)之间波动,非常卡。如果以每秒1次的频率,发送耗时基本能稳定在1ms到4ms之间,偶尔会飙到几秒的耗时。
2、用17年的华为荣耀V9测试,发送耗时基本在2ms以内,偶尔波动到几秒的延时。情况要比测试1要好很多。
请问是我的发送频率太高还是设置有问题,导致在局域网的不稳定呢。(wifi等条件区确定是稳定流畅的)