我用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等條件區確定是穩定流暢的)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/98331.html
標籤:網絡通信
上一篇:NS-3常規網路的建立
