c# socket 通信稳定性 与速度的 problem
简单说下我的大体情况就是 我 现在 搞上下位机 下位机是 stm32 用的 协议是lwip 我在里面编了就是 一直向上位机发送数据 每个包 1460 吧 然后 上位机 我就是 用的 vs2010 编的 语言是 vc#.net 现在 通信速度 基本是 1M/s 以上 但是 不是 很稳定 现在 就是 有个问题就是 我用的 阻塞的方式 当连接 服务器与客户端连接后 然后 开始 接收数据下面就是代码 其中 showMsg(stringdata );我是用的 委托 invoke 下面可以看见 就是 在 当前窗体 显示 接收到的数据 并且不断地 相加
[/ while (Connected)
{
try {
if (jx)
{
int recv = newclient.Receive(data);
if (recv == 0)
{
MessageBox.Show("sorry buffer is empty!!!!");
break;
}
y += recv;
Console.WriteLine(recv.ToString());
string stringdata = Encoding.ASCII.GetString(data, 0, recv);
showtext(y.ToString());
showMsg(stringdata );
}
}
catch (Exception e)
{
MessageBox .Show(e.Message );
}
finally
{
}
}
}
]
这是 showmsg(string msg)的程序
public void showMsg(string msg)
{
try
{
{
//在线程里以安全方式调用控件
if (receiveMsg.InvokeRequired)
{
MyInvoke _myinvoke = new MyInvoke(showMsg);
receiveMsg.Invoke(_myinvoke, new object[] { msg });
}
else
{
receiveMsg.AppendText(msg);
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
}
}
现在 就是 我 发现 速度 不断的下降 不知道 是为什么 然后 我 怀疑 是不是显示这块 有问题 然后 我就把 showmsg 注释掉 发现速度 稳定下来了 能运行 半小时 以上 我想问下我
一、 在不影响 接受速度的情况下我该怎么 编程
二、我想用 异步 是否 好点?
三、或者我把显示 去掉直接 改为实时 保存到 某文件中区 还有 就是保存 最好用 什么形式保存 就是代码 我的 程序里面是 这样保存的
private void button1_Click(object sender, EventArgs e)
{
StreamWriter strWriter = new StreamWriter(@"D:\1.txt", false);//保存到C盘的store这个 txt文件里面
strWriter.Write(receiveMsg .Text );
}
四 、如果 上面的解决了我想请问高手 就是 正常情况下 要考虑哪些 factor 去考虑 使他 编的更加的 健全 速度稳定 性上 更好 在此 希望大神们 能够 help me
本人 刚刚开始学 所以 不懂得很多