新手仅有的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等条件区确定是稳定流畅的)



...全文
226 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧