首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

收发数据的原理(上)

上一篇五分钟了解网络连接讲了网络连接的大概流程,并且文末讲到客户端委托协议栈收发数据可以总结为四步: 1、创建套接字(创建套接字阶段) 2、将管道连接到服务器端的套接字上(连接阶段) 3、收发数据...协议栈的上半部分有两块,分别是负责用TCP协议收发数据的部分和负责用UDP协议收发数据的部分,它们会接受应用程序的委托执行收发数据的操作。...同样,描述符是用在应用程序委托协议栈收发数据的时候。...双方通过通信规则进行信息交换从而完成数据收发准备。收发操作,需要一块临时存放要收发数据的内存空间,这块内存空间叫做缓冲区,它是在连接操作过程中分配的。 关于控制信息头部 控制信息可以分为两类。...等到后面的收发数据操作。 在此,收发数据的创建套接字阶段、连接阶段已经讲完,剩下的通信阶段、断开阶段留到下次再讲。

77820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    异步方式串口收发数据

    本文将重点介绍如何在Windows平台上使用异步方式进行串口数据收发。1....异步串口通信概述异步串口通信是指在数据传输过程中,发送方和接收方不需要严格的时钟同步,而是依赖于数据包的起始位和停止位来标识数据的开始和结束。这种方式适用于数据传输速率较低、传输距离较短的场景。2....异步串口通信的特点异步串口通信具有以下特点:字符为单位:以字符为单位进行数据传输。起始位和停止位:每个字符的开始和结束由起始位和停止位标识。无外部时钟同步:发送方和接收方不需要外部时钟信号同步。...ReadFile和WriteFile:用于同步读取和写入串口数据。SetCommMask和WaitCommEvent:用于设置串口事件和等待事件。SetupComm:用于设置串口的输入输出缓冲区大小。...= ERROR_IO_PENDING) { // 读取失败处理}4.5 异步发送串口数据使用WriteFile函数进行异步发送时,同样需要提供一个OVERLAPPED结构体。

    83000

    收发数据的原理(下)

    网络原理系列文章: 一、五分钟了解网络连接(已完成) 二、收发数据的原理(上)(已完成) 三、收发数据的原理(下)(已完成) 四、收发数据的番外篇(未完成) 因为网络原理不是三言两语可以讲完,如果读者很忙...在上篇我们已经讲了TCP收发数据的前两步,接下来是最后两步。 将HTTP消息传给协议栈 上篇讲到控制流程从 connect 回到应用程序之后,就到了数据收发阶段。...发送方和接收方在开始收发数据前需要告知对象序号初始值 通过seq序号和ACK号可以确认数据,我们前面只考虑了单向传输,但TCP数据收发是双向的,所以客户端向服务器发送数据,服务器也会向客户端发送。...接下来到收发操作工作,数据收发工作可以双向同时进行。客户端向服务器发送请求,序号也会跟随数据一起发送(④),服务器收到数据返回ACK号(⑤)。同理,服务器向客户端发送数据(⑥⑦)。...总结 TCP收发数据的整体流程分为以下三个部分。 收发数据三个步骤开始前的操作是创建套接字,应用程序调用Socket库的一个程序组件socket程序申请创建套接字,之后协议栈去执行操作。

    1K20

    同步方式串口收发数据

    本文将详细介绍如何在Windows平台下使用同步方式进行串口数据收发。1. 串口通信基础串口通信,也称为串行通信,是一种计算机硬件连接方式,允许计算机与其他设备进行数据交换。...在Windows中,串口通常以文件的形式存在,可以通过文件I/O操作来进行数据的读写。2....同步串口通信同步串口通信意味着数据的发送和接收是在同一个线程中顺序执行的,发送或接收操作会阻塞当前线程,直到操作完成。这种方式简单易实现,但可能会影响程序的响应性。3....同步读取串口数据同步读取串口数据可以使用ReadFile函数。这个函数会阻塞调用线程,直到读取到指定数量的数据或发生错误。DWORD bytesRead;CHAR Buffer[64];if (!...同步发送串口数据同步发送串口数据同样使用WriteFile函数。这个函数也会阻塞调用线程,直到所有数据被发送或发生错误。

    88600

    使用脚本收发 protobuf 协议数据

    protobuf 上面的接口确实是基于二进制数据的协议,虽然是私有协议,但是采用了 protobuf 来进行规范,在提高性能的同时,也保留了一定的通用性。...brosAddr 是设备的广播地址,可能存在多个 (repeated) 地址都是由一个字符串地址和一个整型端口组成 如果使用 protoc 程序根据 msg.proto 生成 c++ 代码,再写程序解析数据...pbjs 的功能有很多,help 信息中已经罗列出来了,例如生成 js 代码 (--es5/--es6),生成 ts 代码 (--ts),不过最让我感兴趣的还是 --decode,意思是可以将数据解析为...json,下面用上一节的二进制数据做个练手,假设数据已经保存在名为 response.bin 的文件: > pbjs msg.proto --decode ProbeIpv6Response < response.bin...jq 有了 json 数据就好办了,下面上 jq 提取设备 IP,假设已经将数据保存在了 response.json 文件中: > jq -r '.selfAddr.addrV6' probe_v6.

    22421

    WaitCommEvent、SetCommMask方式串口收发数据

    本文将详细介绍如何使用WaitCommEvent和SetCommMask函数进行异步串口数据收发。1. 异步串口通信概述异步串口通信允许数据在不阻塞当前线程的情况下进行发送和接收。...这种方式特别适合于数据传输速率较低、实时性要求不高的场景。在Windows中,可以通过WaitCommEvent和SetCommMask函数来实现异步串口通信。2....hFile, LPDWORD lpEvtMask, LPOVERLAPPED lpOverlapped);hFile参数是串口的句柄,lpEvtMask参数是一个指向DWORD的指针,用于接收发生的事件类型...异步读写串口数据在设置了事件掩码并等待事件后,你可以使用ReadFile和WriteFile函数进行异步读写操作。...例如,如果检测到EV_RXCHAR事件,你可以从串口读取数据;如果检测到EV_TXEMPTY事件,你可以继续发送下一批数据。6.

    86900

    Linux 网卡数据收发过程分析

    一般来说,网卡主要有两个重要的功能:接收数据 和 发送数据。 所以,当网卡接收到数据包后,要通知 Linux 内核有数据需要处理。另外,网卡驱动应该提供让 Linux 内核把数据把发送出去的接口。...不过本文主要分析网卡设备收发数据的实现,所以不会分析 net_device 结构的所有成员。...下面主要列出收发数据相关的成员,如下: struct net_device { char name[IFNAMSIZ]; // 设备名字 ......所以,当网卡接收到数据包时,会触发 ei_interrupt 中断服务来通知内核有数据包需要处理。而当需要通过网卡发送数据时,将会调用 ei_start_xmit 方法把数据发送出去。...当把数据包上送给内核网络协议栈后,数据包的处理就由内核接管。

    2.4K30

    udp服务端收发数据流程

    6、收到消息的时候,先确定客户端的编码形式是utf-8还是gbk,并且用同样的方式把字节码解码成能看懂的数据。 7、在进行回发的时候,要首先对要发送的数据进行编码,转换成对应的字节码发送。...9、在用线程,进程,进程池的时候可实现消息收发的并行,协程的时候可实现伪并行,原理就是方法之间切换。 10、协程可使用封装好的框架,greenlet以及gevent框架来操作。...可能多个,所以不限 local_port = ('', 8989) # 绑定本地端口 socket_serve.bind(local_port) while True: # 本地端口监听客户端数据...(接收数据) socket_temp_serve_data = socket_serve.recvfrom(1024) # 数据解码 socket_serve_data = socket_temp_serve_data...[0].decode('gbk') # 打印接受到的数据 print(socket_serve_data) # 用户输入数据并对客户端发送 socket_serve_sendto_temp_data

    1K80

    iOS蓝牙开发如何更好地收发数据

    3月中旬跳槽了,一直在新公司「填坑」,看着「先人」写的代码,觉得是有改善空间的,所以这次想聊下这部分内容——iOS蓝牙开发中如何更好地更好地收发数据。...适读对象: 想初步了解iOS蓝牙开发的朋友(最好连计算机基础都没有,就像我这种没有计算机科班基础的伪程序猿(真文科汪)); 做过蓝牙开发,但是没有很「优雅」地收发数据的朋友(直接用C语言char数组装回来...「特征」中发送数据给手机端); 9、利用数据输入「特征」发送数据,或者等待数据输出「特征」发出来的数据。...我们暂且这样理解:NSData(NSMutableData)是二进制数据对象——苹果将二进制数据封装成对象,让我们可以用面向对象的思维去操作这些数据。...如何更好地收发数据 好了,上面讲了一大堆,终于要和标题扯上点关系了。

    2.8K32

    udp客户端收发数据流程

    5、这里还可以进行消息的接收,在这里接收消息首先得要发送数据到指定的服务端,告诉服务端客户端的ip以及所使用的端口是什么。...6、如果先进行消息阻塞是收不到消息的,这里客户端不需要绑定端口可以理解成在客户端把数据发送到服务端以后系统在后台默默地 把客户端ip以及端口和客户端绑定了起来。...7、接受到消息同样要进行解码,解码形式与服务端发送过来数据的编码格式相对应,把字节码转换成能看懂的数据进行打印。 8、最后进行客户端udp套接字关闭。...确定目标ip以及端口,这里是服务端在局域网内的ip地址以及服务端绑定的端口号 dest_addr = (' 这里填写服务端ipv4地址 ', 8989) while True: # 输入发送数据...temp_data = input('客户端:') # 加上具体对象形成对话形式 temp_data = '客户端:' + temp_data # 对将要发送的数据进行编码

    2.4K40

    收发数据页面原来这么简单!(自制上位机)

    需求 我们在平时使用单片机制作项目时,总是希望能够实时显示一些数据,并将这些数据进行处理,从而进行使用。那么上位机就必不可少了。...下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。...那么我今天就来制作这样一款上位机,主要用来实现获取开发板的数据,并进行判别,显示不同的提示。还可以发送给单片机相关数据。 准备 1. 带串口的单片机(用来进行测试,没有也行) 2....Visual Studio 2019 功能设计 设置波特率等串口参数 打开串口 检测串口 发送数据 接收数据 调整格式 检测收发数据的字节总量 清空接收区和发送区 对收到的数据进行处理 设置串口数据缓冲等待时间...ComDevice.DiscardInBuffer(); this.AddData(ReDatas);//输出数据 实现页面 ?

    1.6K20
    领券