关于h5调用蓝牙接收数据包的问题

用h5写了一个程序,可调用手机蓝牙连接其他低功耗蓝牙设备,程序发送命令后,设备返回数据,但是有一个问题就是低功耗蓝牙设备一次只能发送18字节的数据包,就导致了程序收到的数据包有几个,所以需要将这些拆开的胡数据包拼接成完整的数据,有没有人做过这个功能

2个回答

拼接后一起解码,正在做微信蓝牙设备接入,可以一起探讨

qq_33394209
Weyh. 肯定是要拼接后一起解码,但是由于无法判断数据包的数量,所以暂时无法解决,只能靠换行区分数据,而且同时接受两个不同数据包时还会出现数据重复的问题
5 个月之前 回复

oad升级 你可以去看看oad升级的,升级文件125kb,大致拆分7913个包吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个关于数据包接收的问题
现在在做SMGP,就是个短信网关系统。现在我发送短信后,接收状态报告的时候,接收到的是乱码,不知道应该如何转换rnrn如下面是抓包工具抓到的数据包,一共211字节,其中不同颜色区域的字节为12+69+122+8 rn[color=#FF00FF]...?......[/color](  q?.2009091614202013302530865..........1065902196005.59锟斤縵[color=#FF0000]id:'  R2. sub:001 dlvrd:001 submit date:0909161420 done date:0909161420 stat:DELIVRD err:000 text:010锟斤拷喜锟斤拷锟?[[/color]color=#00FF00]......[/color].rnrn相对应的rn00 00 00 D3 00 00 00 03 00 00 00 00 28 01 09 16 rn14 20 20 71 89 00 01 00 32 30 30 39 30 39 31 36 rn31 34 32 30 32 30 31 33 33 30 32 35 33 30 38 36 rn35 00 00 00 00 00 00 00 00 00 00 31 30 36 35 39 rn30 32 31 39 36 30 30 35 00 35 39 EF BF BD EF BF rn7A 69 64 3A 27 01 09 16 14 20 15 52 32 00 20 73 rn75 62 3A 30 30 31 20 64 6C 76 72 64 3A 30 30 31 rn20 73 75 62 6D 69 74 20 64 61 74 65 3A 30 39 30 rn39 31 36 31 34 32 30 20 64 6F 6E 65 20 64 61 74 rn65 3A 30 39 30 39 31 36 31 34 32 30 20 73 74 61 rn74 3A 44 45 4C 49 56 52 44 20 65 72 72 3A 30 30 rn30 20 74 65 78 74 3A 30 31 30 EF BF BD EF BF BD rnCF B2 EF BF BD EF BF BD EF BF BD 00 00 00 00 00 rn00 00 00 rnrn我是想那122字节区域有什么办法能正确显示出来?就是转换成正常的字符串,而不是乱码?谢谢了rn我也尝试着用GB3212,UTF8等格式转化,但是得到的还是乱码。。。。rn不知道有人能看明白我所说的话吗?rnrn
关于XP接收数据包的问题
我在WIN7上设置两个IP时,发送3个数据包,接收正常rn当我在XP系统中设置一个IP时接收正常,设置两个IP时怎么有的数据包接收了两次呢,但是抓包显示只发送了一次rn请问是什么问题呢rn我是在WIN7 VS2010写的MFC程序。
关于接收TCP数据包问题
IDTcpClient接收到服务机发来的数据包,数据包结构如下:rn TimBytes = array of Byte;rn _PACKHEADER = recordrn packSize: Integer; //数据包的总长度rn packInfo: TPACKINFO; //包信息rn dataSize: Integer; //data的长度rn data: TimBytes; //PByte; //数据包rn end _PACKHEADER;rn服务机通过TCP发送一幅图像,data数据即为该图像,TCPClient该如何读取这个数据包并将图像保存到本地;另如何将windows.copymemery保存在内存中的数据提取出来?
关于spi数据包接收
各位老师好:rn 我现在做一个基于SPI网络封包截获的程序,我想控制接收到的内容,如果接收到的数据不符合要求,就丢掉,请问如何把接收的内容不提交给上层应用程序,就直接丢弃掉呢?郁闷好久了,找不到解决办法,跪求指教!!
关于接收数据包的小问题
当我在win7系统环境下给电脑设置多个ip时,我的程序对于发过来的数据包都是接收一次,没有重复的,当我在xp的环境下设置多个ip时,同样的数据包会接收到多次,并且有几个ip会接收到几次重复的数据包,导致我的程序慢并且有时数据包丢失,请问这是什么原因,该怎么解决?
发送和接收数据包问题?
在本地连接状态中 只能发出数据包而不能接收到数据包 这是怎么回事?rn在网络邻居中 不管是在临近的计算机还是整个网络都只能看到我自己,怎么回事?
数据包接收和发送问题
在使用tcp连接发送数据包时,我连续调用send,发送不同的数据,可是在接收的时候,如果两次发送的数据包不是很大,则接收时,将一起接收,即一次recv动作将把两次send的数据全都接收进来,也可能是两次的数据被一次send出去,请问如何才能使得,每一次recv就接收一次send的数据,无论数据包有多小?谢谢!rn
批量数据包接收问题
请问怎么用SOCKET实现一个客户端程序每10秒的间隔能正确接收几千个由服务器端发来的200个字节左右的数据包;
接收数据包问题
请问你们谁做过数据包拦截问题,比如我通过局域网打印文件,我要怎么截取发送的数据包!最好有源代码!rn 如果有点发份到 dengjiulonge@163.com;最要是java或者net的!
iocp接收数据包的问题
我这是在csdn上提出来关于此的第7个问题了吧。没有一个正面解决。我无奈只有再次提出,以上是数据包发送内容rnrn客户端发送 1234-6552rn服务端缓冲区 长度是2rnrn从主机 127.0.0.1 接收数据:1 字节:2 --- thread id: 5140.rn从主机 127.0.0.1 接收数据:23 字节:2 --- thread id: 5328.rn从主机 127.0.0.1 接收数据:4- 字节:2 --- thread id: 6808.rn从主机 127.0.0.1 接收数据:65 字节:2 --- thread id: 7204.rn从主机 127.0.0.1 接收数据:52 字节:2 --- thread id: 5140.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 5328.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 7204.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 6808.rn从主机 127.0.0.1 接收数据:1 字节:2 --- thread id: 5140.rn从主机 127.0.0.1 接收数据:23 字节:2 --- thread id: 5328.rn从主机 127.0.0.1 接收数据:4- 字节:2 --- thread id: 6808.rn从主机 127.0.0.1 接收数据:65 字节:2 --- thread id: 7204.rn从主机 127.0.0.1 接收数据:52 字节:2 --- thread id: 5140.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 5328.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 7204.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 6808.rn从主机 127.0.0.1 接收数据:1 字节:2 --- thread id: 5140.rn从主机 127.0.0.1 接收数据:23 字节:2 --- thread id: 5328.rn从主机 127.0.0.1 接收数据:4- 字节:2 --- thread id: 6808.rn从主机 127.0.0.1 接收数据:65 字节:2 --- thread id: 7204.rn从主机 127.0.0.1 接收数据:52 字节:2 --- thread id: 7204.rn从主机 127.0.0.1 接收数据: 字节:2 --- thread id: 5328.rnrnrn[color=#FF0000]事实证明包顺序完全没有问题,不过一个完整的包分别在不同的iocp工作线程中获取到了2个字节!请问下各位老师,这怎么处理?如果方便请放代码便于小生理解。谢谢各位老师[/color]
蓝牙接收问题?
我用的mobile 5.0系统手机,想做蓝牙接收端程序。但是现在其他手机通过蓝牙发送数据,我的手机自动接收。我想不让手机自动接收,想自己做个程序接收应该怎么做!请各位大侠指教!!!
问一个关于数据包接收的问题?
想请问一下一般的数据包大小是不是固定的??如果是固定的,那是不是可以直接将接收到的数据块转换为一个事先按照包结构定义的结构体里,从而可以 将数据一个字段一个字段的取出??如果没有固定大小,那怎么做??我个人感觉好像一般都有一个固定了大小的包头吧,根据这个包头里面的数据来分配内存??rnrn还有一个问题就是我在一个局域网里面用基于TCP的SOCKET建立服务器端和客服端,用一个公网IP可以和我建立连接并收发数据,但如果另外一个IP也是在局域网(比如校园网)里面,我这边必须要修改路由器的转发规则,把我的IP和端口映射过去才能收到,否则就收不到,请问这是怎么回事??rnrn谢谢
关于win32中iocp接收数据包问题
客户端由于比较单一没暂时没有使用iocp处理rnrn服务端由于要处理大量请求,使用了iocp架构rnrn目前面临一个问题:rnrnWSARecv中缓冲区肯定不足接收客户端send()发送的整个数据包。但是WSARecv调用后就会投入io队列。那么这个队列的所处理的包我是不是可以理解是不完整的?当然如果wsarecv的缓冲区足够大是没有问题的。毕竟这个包我无法估量,但是大多数是大于缓冲区的。请问各位前辈和老师如何解决这个问题呢?我刚刚接触如果有不对请说下。如果有代码我理解比较方便,谢谢
关于DELPHI 串口接收数据包问题
本人使用 spcomm 对串口进行控制rn目前遇到这样一个问题rn需要接收的数据 字节长度为 2000字节 不包括报头 校检位等rn但是发送数据的设备只能支持每次传输 250个字节数据 不包括报头 校检位等rn就是说 我这边要接收8个包 把8个包的数据拼成一个数据rnspcomm 如何设置 它能自己根据报头 校检等信息拼装数据么 ?还是要我手工来写呢?rn思路是怎么样的 求高手解答rn以前我用这个都一次接收了。。不存在多个包的情况
关于自定义数据包接收错位的问题
我自己定义了一个数据包rnstruct stMSG rn int CMD;rn unsigned long ip;rn int msgport;rn char name[64];rn int length;rn char buffer[1500];rn;rn接收时总是错位。有什么好的办法解决吗?谢谢。
问一个关于网络通讯数据包接收的问题
数据通讯采用GPRS通讯,主站这边向终端设备查询一条数据,由于GPRS中的网络延时,有时候会很慢才能送到主站。如果这时,我在查询的中途,取消了本次查询,又进行了一次数据查询,这时,有可能会产生,我收到的是上一次查询终端返回的数据包,请问大家,如何解决这个问题???
关于SPCOM接收数据包(.RAR)的问题----急!
我用SPCOM去接收串口发送上来的一个.rar文件包,文件包的大小大概是100kb左右,普通断的数据我是懂得怎么接收,现在是不知道接收这种压缩的文件包该怎么作呢?rn在网络上一直找不到这样的例子,哪位好心的大哥能给我一些代码参考一下。不甚感激rnrn还有一个问题就是同样用SPCOM怎么接收图片(.bmp或者.jpg格式)???
关于ServerSocket接收数据包的多线程问题
怎么使用多线程接收客户端发过来的数据,使用多线程是否每一个线程都要创建一个ServerSocket.rn
蓝牙的接收
正在学android蓝牙基础知识,这个也是转来的
关于蓝牙的调用
通过蓝牙连接两台手机可以通过编写代码,用discover方法搜索到附近的设备,然后用一个列表储存这些设备,并选择其中一个进行连接,那么可不可以在手机自带的系统蓝牙界面里连接好设备,然后在代码里直接调用这个设备?rn我看高通公司出的一款蓝牙手表里,它手机app和智能手表用蓝牙连接的时候,按一个button就进入手机自带的蓝牙界面里,然后连接到智能手表,手机端就显示和手表连接了
TCP数据包的接收与发送问题
以前做的C/S都是直接发送的是流..SOCK_STREAM这种方式发送的...rnrn现在我想用自定义数据包的,发送数据包.希望大家指点一下...什么书针对这个比较有针对性.同时我也正开始看TCP/IP第三卷...rnrn希望给个例子..开个好头...麻烦吧友咯...谢谢!!
串口接收数据包完整问题
各位大神:rn 平台:VS2013,MFCrn我在网上看到你发的一篇《C++串口编程实例》,链接http://blog.csdn.net/jiangqin115/article/details/40391289rn 加入工程使用测试后,在接收时有不稳当现象,具体如下描述:rn1、 使用串口:9600 baud,1 start-bit,1 stop-bit,no partities;rn2、 发送正常,但在接收时,偶尔有拆包的情况出现,rnrnconst UINT SLEEP_TIME_INTERVAL = 5; rn/** 设置串口的超时时间,均设为0,表示不使用超时限制 */ rn COMMTIMEOUTS CommTimeouts; rn CommTimeouts.ReadIntervalTimeout = 0; rn CommTimeouts.ReadTotalTimeoutMultiplier = 0; rn CommTimeouts.ReadTotalTimeoutConstant = 0; rn CommTimeouts.WriteTotalTimeoutMultiplier = 0; rn CommTimeouts.WriteTotalTimeoutConstant = 0; rn // 线程循环,轮询方式读取串口数据 rn while (!pSerialPort->s_bExit) rn rn UINT BytesInQue = pSerialPort->GetBytesInCOM(); rn /** 如果串口输入缓冲区中无数据,则休息一会再查询 */ rn if ( BytesInQue == 0 ) rn rn Sleep(SLEEP_TIME_INTERVAL); rn continue; rn rn bResult = ReadFile(m_hComm, ptr, BytesInQue , &BytesRead, NULL);rnrn rn比如,实际有发30个字节,但GetBytesInCOM()只取到8个字节就返回了,剩余22个字节下一次才返回,就把一个数据包变成两次返回;rn当把SLEEP_TIME_INTERVAL间隔从5ms增加到100ms,发生这种不能一次取完概率会变小,但还是会出现。rnrn我用虚拟串口就没啥问题了,很稳定,难道是硬件中断的问题?rn如何保证每次接收一个完整的数据包?rn谢谢!rn在线等! rn
请教一个数据包接收的问题
有2个线程共享一个套接口,当A向外发送一个数据包时,有什么办法能控制让B能收到回复的数据包而不是A收到呢?或者2个线程都收到也可以。。。
CSocket接收大数据包问题
现在发送端要发送一张图片数据大概是4,5M的样子,我是接收端,调用onreceive函数接收数据一次会收不全,但是Onreceive不会再次触发,所以我必须用GOTO函数手动回到recv函数那里再检测一次收到多少数据了,然后继续保存到缓存内,但是现在遇到一个很奇怪的问题,我必须在检测收到多少数据和goto回到检测数据中间加入一些延时操作或者是sleep,否则函数无法向下执行,但是我F10单步调试函数却依然可以向下执行,想问一下有人知道是为什么吗?函数如下:rnrnvoid CMFCApplication2Dlg::RecvData(CServerSocket* pSocket)rnrn char m_cbRecvBuf[819200];rn rn memset(m_cbRecvBuf, 0, sizeof(char) * 819200);rnrn int m_nRecvSize = 0;rnrecheckbuffer:rn int nRecvSize = ::recv(*pSocket, m_cbRecvBuf + m_nRecvSize, 819200 - m_nRecvSize, 0);rn m_nRecvSize += nRecvSize;rn while (m_nRecvSize >= 4)rn rn int t;rn memcpy(&t, m_cbRecvBuf, 4);//前4byte得到header大小rnrn if (m_nRecvSize < t + 4)rn rn // 还不够拼凑出一个完整headerrn break;rn rn char* m_cbRecvheaderBuf = new char[t];rn CopyMemory(m_cbRecvheaderBuf, m_cbRecvBuf + 4, t);//将4byte后数据保存到缓存中rn ...................这里对header进行解码rnrn int t2 = 0;rn if (m_nRecvSize < t + 8)rn rn // 还不够拼凑出一个完整body的大小数据rn break;rn rn memcpy(&t2, m_cbRecvBuf + t + 4, 4);//前4byte得到body的大小rn rn Sleep(1);//必须要加一个延时或者是任意函数在中间才能让函数正常执行,这是为什么??rn if (m_nRecvSize < t + 8 + t2)// 还不够拼凑出一个完整bodyrn rn goto recheckbuffer;rn rn CopyMemory(m_DataBuf, m_cbRecvBuf + t + 8, t2);//拷贝到数据缓存处理rn memset(m_cbRecvBuf, 0, sizeof(char) * 819200);rn m_nRecvSize = 0;rnrn
recvfrom接收数据包超时问题
实现路由跟踪,前面几跳recvfrom都返回超时错误,但是我用抓包工具查了下,能收到路由器发过来的icmp包。只有最后一跳(到达目的地)能接收到icmp数据包。怎么改啊?rnrnm_sockRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, rn NULL, 0,WSA_FLAG_OVERLAPPED); rn……rnsendto(m_sockRaw, m_IcmpData, m_nDatasize, 0, rn (SOCKADDR *)&m_addrDest, sizeof(m_addrDest));rnrecvfrom(m_sockRaw, m_RcvBuffer, MAX_PACKET, 0, rn (struct sockaddr*)&m_addrFrom, &fromlen); rnrn我下了好几个别人写的代码也出现这样的问题,是怎么回事啊?rn我抓包的时候能抓到路由器发过来的icmp包。rnrn网络编程新手,求高手指点。
ICMP数据包的发送和接收问题
程序有服务器端和客户端,我想由客户端定时的向服务器端(已知IP)主机发送icmp数据包,服务器端来接收包,根据接收到的数据包来判断丢包率的大小,这个间隔时间是可变的。哪位大虾做过,能否share一下源码?
java.nio的DatagramChannel接收数据包问题
在使用datagramsocket的时候,可以结合datagrampacket一起,一个一个的接收数据包。rnrn使用DatagramChannel时候,receive方法是以bytebuffer为参数的。我想问,如果一下来了好几个数据包,怎样把它们一一读出来? rnrn谢谢大侠!!
h5 蓝牙4.0程序
蓝牙4.0 BLE程序。。
安卓蓝牙接收数据丢失问题
小弟自学安卓一段时间,近来在编安卓蓝牙的程序,希望能够使手机和蓝牙模块通信,进行数据传输。手机端的程序service主要是参照doc里头的实例编写,现在碰到的问题是,手机端收到蓝牙模块发过来的数据有数据丢失的情况,一般是丢失第一位,等数据量一大,会随机丢失...问过一位大神,他只简单地说要用string来做缓存,而不能用byte数组做缓存...rn我已经改了好久了...还是没有搞定...求大神指导!!!!
VLAN数据包接收流程
先来看一下vlan数据包的帧格式,整个vlan信息大小为4个字节,分别为2个字节的标签协议标识(Tag Protocol Identifier),和2个字节标签控制信息(Tag Control Infomation)。其中后者TCI又有三个子字段组成:3个bit的优先级(PRI)、一个bit的标准格式指示器(Canonical Format Indicator)和12个bit的vlan id:以下...
本地连接发送接收数据包
各位好,本地连接发送和接收数据包 大小单位是什么?rn比如我的单位的电脑,上一天网,接受和发送基本上是 6位数的,但是自己家用1m的宽带,上2-3小时竟达8-9位数,费解中,有没有高手帮忙解释下,谢咯
linux数据包接收过程
最近发现了解linux内数据包的传输机制很有必要,首先总结一下接收过程。数据包从hostA向hostB发包,如下图所示: 一. linux中包的传输过程 (1).      驱动加载并初始化 (2).      数据包到达网卡(网卡中的缓冲区或队列) (3).      包通过DMA拷贝到内核内存中的环形缓冲区中(环形缓冲区中的内存区域是驱动进行分配和映射的,分配后驱动会将
tcp接收数据包
private void button5_Click(object sender, EventArgs e)rn rn byte[] buffer=new byte[1016];rn HostIP = IPAddress.Parse("127.0.0.1");rn rn IPEndPoint point = new IPEndPoint(HostIP, Int32.Parse("11000"));rn Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);rn socket.Connect(point);rn //Thread thread = new Thread(new ThreadStart(Proccess));rn // thread.Start();rnrnrn rnrn int m_intSerial = 0;rn int m_intBlocks = 0; //数据分割块数 rn int m_intLength = 0; //数据长度 rn int m_intMessageLength = 0;rn int place = 0;rn int m_intGetCount = 0;rn rn rn string stringData ;rn int recv = 0;rn byte[] data1 = new byte[1016];rn recv = socket.Receive(data1);rn stringData = Encoding.ASCII.GetString(data1, 0, recv);rn byte[] bytesF = Encoding.ASCII.GetBytes(stringData);rn //byte[] data2 = new byte[m_intLength];rn //byte[] bytesF = socket.Receive(data2);rn // byte[] bytesF = socket.Receive(point);rnrn place = 0;rn m_intSerial = BitConverter.ToInt32(bytesF, place);rn place += 4;rn m_intBlocks = BitConverter.ToInt32(bytesF, place);rn place += 4;rn m_intLength = BitConverter.ToInt32(bytesF, place);rn place += 4;rn m_intMessageLength = BitConverter.ToInt32(bytesF, place);rn place += 4;rnrn byte[] data = new byte[m_intMessageLength]; //申明数据的总长 rn rn Array.Copy(bytesF, 16, data, m_intBlockLength * m_intSerial, m_intLength); //复制数据 rnrn m_intGetCount = m_intGetCount + 1;rn Application.DoEvents();rnrn while (m_intGetCount <=21)rn rn rn byte[] bytes= new byte[1016];rn // byte[] bytes = socket.Receive(data2);rn rn place = 0;rn m_intSerial = BitConverter.ToInt32(bytes, place);rn place += 4;rn m_intBlocks = BitConverter.ToInt32(bytes, place);rn place += 4;rn m_intLength = BitConverter.ToInt32(bytes, place);rn place += 4;rn m_intMessageLength = BitConverter.ToInt32(bytes, place);rn place += 4;rnrn Array.Copy(bytes, 16, data, m_intBlockLength * m_intSerial, m_intLength); //复制数据 rnrn m_intGetCount = m_intGetCount + 1;rnrn // Application.DoEvents();rn rnrn rnrn rnrn MemoryStream ms = new MemoryStream(data);rn Bitmap bm = (Bitmap)Image.FromStream(ms);rn //Image image = Image.FromStream(ms);rn bm.Save("f:\\dd4.jpg");rn //image.Save("f:\\dd4.jpg");rn socket.Close();rn rn rn
TCP数据包的接收过程
TCP数据包的接收过程 1,一般网卡接收数据是以触发中断来接收的,在网卡driver中,接收到数据时,往kernel的api:netif_rx()丢 2,接着数据被送到IP层ip_local_deliver_finish(),经过剥离ip头部,把数据往TCP层发 3,tcp层tcp_v4_rcv()收到数据后,再调用tcp_rcv_established()处理,如果当前用户进程没有正在读取数据,...
dpdk接收数据包原理分析
dpdk接收数据包原理分析 摘要 本文对dpdk数据包捕获技术原理进行了分析,对其优缺点进行了介绍。 对使用基于EAL的应用程序进行了分析,作出了程序流程图。 引言 背景浅析 随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN(Software Define...
数据包接收太多
我的电脑只要开机,就会拼命收包,但发包正常。换一根别人用的正常连接的网线也是如此。请问是什么问题,怎么解决,谢谢!
IP 数据包接收流程
转载自:https://blog.csdn.net/suiyuan19840208/article/details/19684883
UDP接收高速数据包?
各位高人,rn我在windows下使用udp接收大概20M左右的流媒体数据,发现丢包情况比较严重,要怎样才能做到少丢包或不丢包呢rn求解...
主机接收不到数据包
大家好:rn 我编了一个服务器程序,向224.0.0.1这个组播地址发送数据包,客户主机与服务器主机在同一个局域网中,通过集线器连接,但是客户主机没有收到服务器的数据包,请问这是什么原因啊?
数据包的发送与接收
求一C++程序。计算机网络课设--数据包的发送与接收。接收后可以显示出所发送的数据。。。望各位大神帮忙啊,感激哈!网上好多资源都是只有发送没有接收的。。。
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制