求问Qt中如何对通过UDP的ReadDatagram()函数收到的帧进行操作 20C

新手求问,在QT中我用UDP进行收数,接收的是16进制,发端发送的是一组类似于FF 01 0B 11 22 33的帧,通过udp_socket_rx->readDatagram(datagram.data(),datagram.size());这个函数接收到的datagram直接打印出来是ASCII码的形式的字符串,我想在接收端队帧进行操作,比如寻找帧头0XFF然后再对后面的帧进行操作,这个寻找的判断该如何用代码表示

4个回答

就是假设判断的语句是if(temp[0]==0xFF) 这个temp[0]应该是如何通过datagram转换过来的呢?

datagram 类型是 QByteArray ,可以转化为各种数据类型,具体可以参考 转化方法的源码实现

你可以定义个static QByteArray,每收到一个字节就append到最后,然后遍历这个数组就能找到帧头了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
qt对excel进行操作
QT对excel常用的操作,具有一定的参考价值
问:如何通过js对Maptreme2005进行操作
Maptreme2005rn我想做通过js用xmlhttp对地图进行操作rn请问如何自定义命令?rn或rnmapxtreme的地图是指向一个地址。rn如何才能让指定的地址产生地图?
如何通过c#对ACCESS数据库进行操作
private void button4_Click_1(object sender, EventArgs e)rn rnrn if (sc_name.Text != "")rn rn string sql = "delete from stu where 姓名=@name";rn if (connection.State != ConnectionState.Open)rn connection.Open();rn OleDbCommand cmd = new OleDbCommand(sql, connection);rn cmd.Parameters.AddWithValue("@name", sc_name.Text);rn cmd.ExecuteNonQuery();rn //cmd.Dispose();rn connection.Close();rn MessageBox.Show("删除完毕!!!");rn rnrn rn执行以后出现“System.Data.OleDb.OleDbException”类型的未经处理的异常在 System.Data.dll 中发生 rnrn其他信息: 至少一个参数没有被指定值。该如何解决?
如何通过程序对iis进行操作?
如何通过程序对iis进行操作? 进行一些例如新建虚拟目录、指定目录路径、访问权限等操作。rnrn这种程序该怎么写?
如何通过IO对文件进行操作?
文本内容如下: rn[code=XML]rn rn rn AAA rn rn rn rn DDD rn rn rn rn BBB rn rn rn rn CCC rn rn rn rn EEE rn rnrn[/code]rn如何通过IO对文件的指定内容进行插入和删除?rn比如插入:在之前插入数据 DDD rn删除:根据条件将id=3的数据全部删除rn大家帮忙这两个方法要怎么写?
如何通过DBgrid对TXT文件进行操作。
如何通过DBgrid对TXT文件进行显示,添加,修改,删除。
求如何对web服务进行操作的
新手,从来没有用过,如何对web服务进行操作的,读出数据库里的记录等rn如何在另个项目里调用web服务的??
UDP readDatagram 获取发送方ip 地址
QHostAddress *addr;rn quint16 * port;rn QString str;rn char buffer[1024]="";rn struct message *ptr;rn udpSocket -> readDatagram(buffer,1024,addr,port); 每当程序运行到这里时 就出错关闭 这是为什么?
从Qt的图片文件传输来看Qt 中UDP的收发消息writeDatagram和readDatagram
上一篇博客写的是利用Qt的UDP协议传输图片文件。但是有一些问题,比如说还得自己新建一个文件夹存放图片等等。项目想实现的功能是在一个Qt工程的label打开图片文件,另一端就能显示同样的图片,所以加以改进。不需要把接收到的图片写入文件夹中,而是直接把数据都读到picBuffer里面,最后统一显示在label上面。        过程特别曲折,现在也不敢保证完全明白,还望有明白的高人指点。
求教linux驱动开发中,如何通过datasheet对寄存器进行操作?
刚开始学习x86驱动,水平有限一直在坛子水下学习,有个困惑一直没找到答案,向各位高人请教,rnrn一个南桥的驱动,我已经知道要操作的对象是哪个管脚,需要通过软件给这个管脚高低电平,rn有这个芯片的datasheet.rnrn知道这个管脚的基地址存在哪个寄存器里,和相对于这个基地址的偏移量,rnrn但是我怎么去读这个基地址?rnrn比如说,我要对芯片上的GPIO 15引脚进行读写,因此我需要知道GPIO Base Address,然后用baseadd+0xf,应该就是这个管脚的地址了吧?rnrn不知道我理解的和提问的是否正确,还请各位高人指点。rnrnrn
协议栈各层对收到的帧过滤过程
感觉提到帧过滤的帖子挺少的,写一个blog分享下,顺便备忘:         应用层,传输层,网络层其实挺清楚,主要是设备驱动层的的部分功能,可能会有混淆,比如说 多播地址的检测;还有就是 跟软件工程一样,越早发现问题成本越低,这里过滤帧也是越早发现无效数据包,主机的处理负荷越小;         参考文献:TCP/IP 详解(卷1)
Qt 对QTextEdit的文本编辑器进行查找操作
Qt 对QTextEdit的文本编辑器进行查找操作
使用qt对Microsoft Excel进行操作
1,序言 网上的例子还是比较多,但是真正付诸实践,还是需要一番艰苦的探索,尤其在如此炎热的南国初夏午后,烦躁心情可想而知。闲话不多说,开门见山简单说说。 2,步骤与代码 本来想采用两分式,先祭出代码,然后在进行说明。但是,想到过往度过的书,往往还没读到讲解,前面的代码已经忘得一干二净。因此,本文将按照创建的整个步骤,一步一步来说明。 步骤1:创建工程 为了方便说明,我们此处直接创建一个创...
Qt中利用udp进行bit文件的读取,求指教?
现在在做一个获得设备的信息的列表,其中要利用udp读取设备的bit文件,从中移位来获得需要的信息,希望能够的到详细的程序,十分感谢。
抓包收到,在udp中未收到
如题:rn代码如下:rn服务端:rn class UdpService2rn rn IPEndPoint m_ServerIP;rn List client_list;rn bool m_bStart;rn Thread m_tService;rn Socket m_Service;rn ShowImg m_ShowDlg;rn List m_packs;rn byte[] data = new byte[1024 * 1024];rnrn public void SetPort(int port)rn rn // 172.21.8.115rn IPAddress ip = IPAddress.Parse("172.21.8.115");rn this.m_ServerIP = new IPEndPoint(ip, port);rn rnrn public void Start()rn rn if (m_bStart)rn return;rn m_bStart = true;rn client_list = new List();rn m_tService = new Thread(new ThreadStart(ServiceThread));rn m_tService.Start();rn m_ShowDlg = new ShowImg();rn m_packs = new List();rnrn //Thread t = new Thread(new ParameterizedThreadStart(B));rn //t.Start("B"); rn rn public void Stop()rn rn if (m_bStart)rn rn m_bStart = false;rn m_Service.Shutdown(SocketShutdown.Both);rn m_Service.Close(); rn m_tService.Join();rn rn rnrn private void ServiceThread()rn rn // Console.WriteLine("UDP服务器开始监听" + serverIP.Port + "端口");rn m_Service = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);rn m_Service.Bind(m_ServerIP);rn IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 0);rn EndPoint Remote = (EndPoint)ipep;rn // length = m_Service.ReceiveFrom(data, ref Remote);//接受来自服务器的数据rn m_Service.BeginReceiveFrom(data, 0, data.Length, SocketFlags.None, ref Remote, new AsyncCallback(ServiceRecive), new AsyncState(data, 0, data.Length, Remote));rn rn rnrn private void ServiceRecive(IAsyncResult result)rn rn AsyncState state = (AsyncState)result.AsyncState;rn IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 0);rn EndPoint Remote = (EndPoint)ipep;rn tryrn rn m_Service.EndReceiveFrom(result, ref state.EndPoint);rn client_list.Add(state.EndPoint as IPEndPoint);rn result.AsyncWaitHandle.Close();rn catch(Exception ex)rn int i = 1;rn rn tryrn rn UdpPacket pack = UdpPacket.Deserialize(data);rn if (IsRecive(pack))rn rn //清空数据,重新开始异步接收rn data = new byte[data.Length];rn m_Service.BeginReceiveFrom(data, 0, data.Length, SocketFlags.None, ref Remote, new AsyncCallback(ServiceRecive), new AsyncState(data, 0, data.Length, Remote));rn return;rn rn m_packs.Add(pack);rn if (m_packs.Count == pack.total)rn rn MessageBox.Show("接收完成");rn rn rn catch (Exception ex)rn rn //MessageBox.Show(string.Format("Error: 0, Length=1", ex.Message, length));rn rnrn //清空数据,重新开始异步接收rn if (m_Service != null)rn rn data = new byte[data.Length];rn tryrn rn m_Service.BeginReceiveFrom(data, 0, data.Length, SocketFlags.None, ref Remote, new AsyncCallback(ServiceRecive), new AsyncState(data, 0, data.Length, Remote));rn rn catch (System.Exception ex)rn rn rn rn rn rn rnrn通过判断client_list 中有几个元素,来确定收到了几个包。rn[img=https://img-bbs.csdn.net/upload/201706/16/1497579022_533479.jpg][/img]rn实际一共13个包,在程序中只收到2个包
qt UDP(通过pushbutton发送信息)
在客户端的UI界面拖了一个pushbutton和textdit。 主要代码如下: 发送端: int32_t udpcli::udpSend() { auto uSocket = new QUdpSocket; QString sendText=ui->textEdit->toPlainText(); //获取文本信息 uSocket->write...
VB.NET中如何对串口进行操作??
在VB6.0中用Mscomm对串口进行操作,在VB.NET中有类似的控件可以对串口进行rn操作吗?怎么添加这样的控件呢?rn谢谢!
如何对datagrid中的数据进行操作?
同样是datagrid中的数据操作,rnprivate void Button2_Click(object sender, System.EventArgs e)rn rn string sql="insert into GZ_处理情况(ERRORID,GuZhang,JieJue) values(@ERRORID,@GuZhang,@JieJue)";rn SqlConnection conn = new SqlConnection(sqlConnection1);rn SqlCommand com = new SqlCommand(sql,conn);rn rn com.Parameters.Add("@ERRORID",selected.Text);rn com.Parameters.Add("@GuZhang",TextBox1.Text);rn com.Parameters.Add("@JieJue",TextBox2.Text);rn com.Connection.Open();rn com.ExecuteNonQuery();rn com.Connection.Close();rn rn Response.Write(" ");rn rn就可以执行,rn可如下类似的rnprivate void Button1_Click(object sender, System.EventArgs e)rn rn string sql = "insert into GZ_安排情况(ERRORID,UserName,Location,Department,Description) values(@ERRORID,@UserName,@Location,@Department,@Description)";rn SqlConnection conn=new SqlConnection(sqlConnection1);rn SqlCommand com=new SqlCommand("sql",conn);rnrn com.Parameters.Add("@ERRORID",selected.Text); rn com.Parameters.Add("@UserName",Name.Text);rn com.Parameters.Add("@Location",Address.Text);rn com.Parameters.Add("@Department",Depart.Text);rn com.Parameters.Add("@Description",Description.Text);rn com.Connection.Open();rn com.ExecuteNonQuery();rn com.Connection.Close();rnrn Response.Write(" ");rn rn就报错rn第 1 行: 'sql' 附近有语法错误。 rn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rnrn异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: 'sql' 附近有语法错误。rnrn源错误: rnrnrn行 157: com.Parameters.Add("@Description",Description.Text);rn行 158: com.Connection.Open();rn行 159: com.ExecuteNonQuery();rn行 160: com.Connection.Close();rn行 161:rn rnrn源文件: d:\inetpub\wwwroot\shanhenu\manage.aspx.cs 行: 159 rnrn堆栈跟踪: rnrnrn[SqlException: 第 1 行: 'sql' 附近有语法错误。]rn System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)rn System.Data.SqlClient.SqlCommand.ExecuteNonQuery()rn shanhenu.管理员安排.Button1_Click(Object sender, EventArgs e) in d:\inetpub\wwwroot\shanhenu\manage.aspx.cs:159rn System.Web.UI.WebControls.Button.OnClick(EventArgs e)rn System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)rn System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)rn System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)rn System.Web.UI.Page.ProcessRequestMain()rnrn各位高手,这是什么问题啊? rnrn
在VC++中如何对注册表进行操作:
RegQueryValueEx()用法是什么啊最好有代码示例rn比如我想得到"HKEY_LOCAL_MACHINE\software\beyond"键下面的DataBase的值,应该怎么写,rn另外怎么设置DataBase的值呢,请大侠写出代码,谢谢!rn如果能给我一些资料详细说明在VC++中对注册表的各项操作方法,另送50分。
MFC中如何对菜单栏进行操作
刚开始学MFC,看到菜单栏操作,可是按照教程上的写法根本无法在VC++ 2010下运行,编译倒是可以,可是运行就出错。rn代码如下:rnGetMenu()->GetSubMenu(0)->GetMenuStringW(0,str,MF_BYPOSITION);rn不只是这一个,所有有关CMenu类的操作都不行,我猜是因为新的MFC根本就没有采用CMenu类?在默认的单文档工程中我只找到了CMFCMenuBar 类,是不是这个原因呢?rn不解中………………rn
在VFP中如何对注册表进行操作
我想在VFP程序中对注册表进行操作,即新建键名、设置键值、读取键值,我知道 VFP6.0 本身不能进行该操作,好象是用API函数,但怎样用具体代码实现呢?rn请指点!rn
在Delphi中如何对注册表进行操作
在Delphi中如何对注册表进行操作.txt
=======>>>>>在VC中如何对XML进行操作<<<<<=========
如题。或者那里有相关的代码,谢谢!!!rnrn
Oracle中如何对SYSDATE进行操作?
想取得当前日期可以通过SYSDATE得到,但想取得当前日期与时间呢?我知道SYSDATE中包括了日期与时间信息,但怎样用呢?rn如:rnselect * from syslog where recordtime<=当前时间 and recordtime>=当前时间-1rnrn
C#中如何对缓存进行操作
小弟要做一个数据库登陆验证的操作,需要把已经登陆过的用户放到缓存中,以便这些用户登陆时快一些,求教各位了!!!
在Word中如何对表格进行操作
现已有一个画有表格的模板,如何取得表格的单元格,并添加文本。rn
如何对dbgrid中的数据进行操作?
一次性选中多行数据进行修改和删除我要怎么做才能与数据库同步?请各位大哥给出代码参考一下,谢谢
在vb.net中如何对文件进行操作???
在vb#中如何对文件进行操作,有一个文本是定长的,我想把文本写到access数据库中,请教大家如何实现??我想把文本的一行读到一个变量中,然后对这个变量进行操作,取这一行中的各段写入到每个变量中,再把这些变量写入到数据库中,请教大家这个思路对不对,如何对文件进行操作???谢谢大家!另外使用access数据库有没有存储过程???
MVC 中如何对Chart进行操作!
在ASP.NET中可以对Chart控件添加事件并实现各种不同的控制效果。而在MVC中,图表的呈现是通过图片的形式存在。rnrn怎么才能做到用户与Chart交互操作呢。rnrn难道做这块需求时非得在MVC项目中添加webform来做了么?期待解答。在线等!
如何对母版页中的用户控件进行操作?
一个页面A.aspx的母版页为master.master,现在想在a.aspx中对master.master中的一个用户控件left.ascx中的属性进行操作,应该怎么写?
vc++中如何对端口进行操作?
rnrn为什么VC++中的I/O端口控制命令_inp _outp只能在WIN95下控制端口,而在XP下却不能使用?rn 用什么方法可以替代?rn
在C#中如何对剪切板进行操作?
比如清除剪切板中的内容?????
jsp中如何对word进行操作
需求是这样的:rnrn用户打开一个页面的时候,页面中显示一个word文档(有内容的),用户可以在word文档中进行编辑,然后提交rnrn提交后系统将用户的输入连同原内容一同保存到一个doc文档中rnrn请问如何实现呀rnrn谢谢了
在DELPHI5.0中如何对串口进行操作?
有礼了!在DELPHI5.0中如何对串口进行操作(读写、打开、刷新、关闭)?
如何对datareport中的控件进行操作?
比如给datareport中文本框赋值?rn请高手指点
js 中如何对 list 进行操作
问题描述: 我要实现一个两级联动功能,根据id在数据库中查询相应的数据,我 用的是dwr框架, 在函数方法里面返回了一个List list (其中Model包含两个字段,一个是id,一个是name) ,前面的操作都成功了.rnrn就最后一步,在js中,如何把这个list里面的数据列举在select下拉框下面 ? rnrnfunction populateDistrictList(list) rn DWRUtil.removeAllOptions("streetId");rn var sel = document.getElementById("streetId");rn .......rn //应该怎么写,我试验了几种写法,怎么都说对象不支持此属性和方法,rn // 应该如何写,请帮帮忙.rn //谢谢了.rnrnrn
C#中如何对Excel进行操作
我想将Excel模板复制并打开显示到WinFrom中,然后对其值进行修改
C# 中如何对treeview进行操作?
包括对treeview的多级节点的所有操作,例如增加节点、删除节点,同时节点还不能重复,操作完毕还要存入数据库。大家有做过这样的操作吗?
在excel中如何对整列进行操作
在excel中有一列数值,例如:13434643.13。但是由于前后到有空格:" 13434643.13 "。所以无法进行计算,由于数据太多,不可能用手工改,想问问各位怎么解决,是写程序还是可以直接用excel中的函数,或是要用到VBA.谢谢.
如何对word中的控件进行操作。
现在已经实现了word的表格,文字的程序处理。rn本来打算对word中的文本框处理的,没想到word中的“文本框”并不是textbox,郁闷咯。rnrnrn现在就是想对word文档中的控件进行操作,比如对textbox内容的读取,写入等等。最好有列子rnrn谢谢。rnrn
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数