C#读网口数据的一个问题

swear_light 2015-12-31 05:47:30
项目是这样的,写一个winform程序,这个程序来读网口的数据,并实施的显示出来。现在已经实现了数据的读取,和读取数据后的实时的显示。但是在读取的时候出了一点问题,那就是这样的而正确的数据是这样的Temp is:23 Humidity is:34观察发现我读出来的实际上是第一个字母,前两个字母,前3个字母然后一直这么往后排截图里的是一段,这一段往复的出现。
那么读取的方法是socket异步接受,具体的代码如下
        private void connect(IAsyncResult asy)
{

try
{
client.EndConnect(asy);
client.BeginReceive(recvBytes, 0, recvBytes.Length, SocketFlags.None, new AsyncCallback(RecieveCallBack), null);
}
catch { }
}


private void RecieveCallBack(IAsyncResult iar)
{
try
{
int iRx = client.EndReceive(iar);

byte[] byte_Receive = new byte[iRx];

richTextBox1.Invoke((EventHandler)(delegate
{
for (int i = 0; i < iRx; i++)
{
byte_Receive[i] = recvBytes[i];
//recvStr += Encoding.ASCII.GetString(byte_Receive, 0, bytes);
richTextBox1.AppendText(Encoding.ASCII.GetString(byte_Receive));
richTextBox1.SelectionStart = richTextBox1.TextLength ;
richTextBox1.ScrollToCaret();
}
// bytes = client.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回
}
));
// listBox1.Items.Add(Convert.ToString(byte_Receive[i], 16));

string revStr = System.Text.Encoding.UTF7.GetString(byte_Receive, 0, iRx);

//继续监听下一次的数据接收
client.BeginReceive(recvBytes, 0, recvBytes.Length, SocketFlags.None, new AsyncCallback(RecieveCallBack), null);

}
catch { }
}



其实我感觉这是个很简单的问题,但因为用到的技术没人教我,全都是我自己在网络上自己一点一点按照线索慢慢学的,所以不系统,有些概念跟代码也都不是完全理解。我自己也正在想办法解决
...全文
326 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
有时想起 2016-01-04
  • 打赏
  • 举报
回复
楼主最好把怎么发的 怎么收的都贴出来
xdashewan 2016-01-04
  • 打赏
  • 举报
回复
richTextBox1的赋值别放在循环里面,你一个个字节解析,但每次都AppendText所以才会这样,所以你调整下循环,甚至可以不用循环
Justin-Liu 2016-01-04
  • 打赏
  • 举报
回复
调试一下就行了,看看是发送时候的问题还是接受的问题,看看你缓冲区每次用完清空了没有

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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