精华内容
下载资源
问答
  • 课程笔记 · 同步通信与异步通信概念定义优缺点 定义 简单理解一下同步传输 和 异步传输的定义 同步传输:以数据块为单位进行发送,每个数据块包含多个字符,每个字符5-8bit。每个数据块前面加上起始标志,后面加上...

    课程笔记 · 同步通信与异步通信的概念

    定义

    简单理解一下同步传输 和 异步传输的定义

    1. 同步传输:以数据块为单位进行发送,每个数据块包含多个字符,每个字符5-8bit。每个数据块前面加上起始标志,后面加上结束标志。
    2. 异步传输:以字符为单位发送,一次传输一个字符,每个字符5- 8bit,字符前面有一个起始位,后面有1个或2个停止位。无字符发送时一直发送停止位。

    举个栗子🌰:
    A班跟B班两个班级去春游。A班比较穷只有1辆车,而B班级比较有钱,每人都有车。
    A班只能送完一个小朋友后再接下一个,而B班可以同时送走所有小朋友。A班就是异步传输,B班就是同步传输

    优缺点

    1. 同步通信:传输效率高,开销小;但因为需要建立同步时钟,实现和控制比较复杂。适合高速数据传输系统
    2. 异步通信:不需要传输时钟信号,实现简单;但是传输效率低。只适合低俗数据传输系统

    举个栗子🌰:
    视频和直播。
    我们播放网站上的视频可以采用异步传输,因为不需要传送时钟信号。
    直播就不行了,如果不传送时钟信号,建立同步时钟,我们看的直播都慢半拍。

    展开全文
  • C#异步通信概念及应用浅析 2009-08-20 18:47 夜里煞白 百度空间 字号:T | T C#异步通信概念及应用主要向你介绍了C#异步通信的实现方法和操作的具体的实现方法,希望对你理解和学习C#异步通信有所帮助。...

    转自夜里煞白http://developer.51cto.com/art/200908/145381.htm

    C#异步通信概念及应用浅析

    2009-08-20 18:47 夜里煞白 百度空间 字号: T |  T
    一键收藏,随时查看,分享好友!

    C#异步通信概念及应用主要向你介绍了C#异步通信的实现方法和操作的具体的实现方法,希望对你理解和学习C#异步通信有所帮助。

    AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

    C#异步通信概念及应用的认识首先让我们来看看:在网络编程中运用Socket,常常需要长期监听某个端口,以获得Socket连接,进而执行相关操作。

    但此时,主线程就会被阻塞,无法做其他事情。为了解决这类问题,Socket类中提供了一些支持异步操作的方法,如表17-10所示。

    下表为Socket类中支持异步操作的方法

        

        

    BeginAccept()

    开始一个异步请求,以创建一个新的Socket对象来接受传入的连接请求

    EndAccept()

    结束一个异步请求,以创建一个新的Socket对象来接受传入的连接请求

    BeginConnect()

    开始一个对远程主机的异步请求

    EndConnect()

    结束一个对远程主机的异步请求

    BeginDisconnect()

    开始异步请求从远程主机断开连接

    EndDisconnect()

    结束从远程主机断开连接的异步请求

    BeginReceive()

    开始从连接的Socket中异步接收数据

    EndReceive()

    结束从连接的Socket中异步接收数据

    BeginReceiveFrom()

    开始从指定网络设备中异步接收数据

    EndReceiveFrom()

    结束从指定网络设备中异步接收数据

    BeginSend()

    开始将数据异步发送到连接的Socket

    EndSend()

    结束数据的异步发送

    BeginSendFile()

    开始将文件异步发送到连接的Socket

    EndSendFile()

    结束文件的异步发送

    BeginSendTo()

    向特定的远程主机异步发送数据

    EndSendTo()

    结束对远程主机数据的异步发送

    从上表中可以看出,这些方法都是成对出现的。这些方法能避免网络通信中的阻塞现象。这些方法的使用机制是在Begin开头的方法中注册一个回调函数,当对应的事件发生时,调用该回调函数,且在回调函数中调用对应的End开头的方法。

    下面以BeginAccept()和EndAccept()为例,说明异步方法的用法。BeginAccept()的声明如下所示。

       
    1. public IAsyncResult BeginAccept(AsynCallback callback,  
    2. object state); 

    其中,第一个参数是异步委托AsynCallb了ack,state包含此请求的状态信息的对象。

    EndAccept()方法具有三种重载形式,如下所示。

       
    1. public Socket EndAccept(IAsyncResult asynresult);  
    2.  
    3. public Socket EndAccept(out byte[] buffer,  
    4. IAsyncResult asynresult);  
    5.  
    6. public Socket EndAccept(out byte[] buffer,  
    7. out int bytesTransferred, IAsyncResult asynresult,);  

    asynresult用于存储此异步操作的状态信息及任何用户定义的数据;buffer表示需要传输的字节数据;

    bytesTransferred表示已经传输的字节数。这里的out参数与ref的用法类似,均表示传递引用。它们的区别是ref是传递参数的地址,out是返回值。

    具体用法如下所示。

       
    1. private AsyncCallback callbackOnAccpt; //定制回调方法  
    2.  
    3. private Socket s;  
    4.  
    5. ……  //C#异步通信
    6.  
    7. s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  
    8.  
    9. callbackAccpt = new AsyncCallback(this.OnAccept);//实例化回调方法  
    10.  
    11. s.BeginAccept(callbackOnAccpt, this.s); //开始异步请求  
    12.  
    13. ……  
    14.  
    15. private void OnAccept(IAsyncResult asynresult)  
    16.  
    17. {  
    18.  //C#异步通信
    19. ……  
    20.  
    21. s.EndAccept(asynresult); //结束异步请求  
    22.  
    23. ……  
    24.  
    25. }  

    BeginConnect()和EndConnect()用于对远程主机的异步连接请求。BeginConnect()的声明如下所示。

       
    1. public IAsyncResult BeginConnect(EndPoint remoteEP,  
    2. AsyncCallback callback, object state);  
    3.  
    4. public IAsyncResult BeginConnect(IPAddress address,  
    5. int port,AsyncCallback requestedcallback,object state);  
    6.  
    7. public IAsyncResult BeginConnect(IPAddress[] address,  
    8. int port,AsyncCallback requestedcallback,object state);  
    9.  //C#异步通信
    10. public IAsyncResult BeginConnect(string host,int port,  
    11. AsyncCallback requestedcallback,object state);  

    它的每个重载形式均含有AsyncCallback参数,这是这类Begin开头的方法的特点;remoteEP表示远程主机的IP和端口。

    EndConnect()的声明如下所示。

    public Socket EndConnect(IAsyncResult asynresult);

    它的参数的意义和EndAccept()完全一致。

    BeginSend()表示开始将数据异步发送到连接的Socket,它最常用的声明如下所示。

       
    1. public IAsyncResult BeginSend(byte[] buffer,  
    2. int offset,int size,SocketFlags socketFlags,  
    3.  
    4. AsyncCallback callback,object state);  

    Buffer表示要发送的数据,offset表示buffer中发送数据的位置,size为发送字节数的大小,socketFlags指SocketFlags值的按位组合。

    EndSend()的声明如下所示。

       
    1. public Socket EndSend(IAsyncResult asynresult); 

    BeginReceive()表示开始从连接的Socket中异步接收数据,它的常见声明如下所示。

       
    1. public IAsyncResult BeginReceive(byte[] buffer,  
    2. int offset,int size,SocketFlags socketFlags,  
    3.  
    4. AsyncCallback callback,object state); 

    它的参数和BeginSend()是完全一致的,这里不再赘述。

    EndReceive()的声明如下所示。

       
    1. public Socket EndReceive(IAsyncResult asynresult); 

    C#异步通信之Socket中异步通信的实现要远比同步困难,这里不再举例。简单地说,在同步中,主线程如果调用一个方法,那么主线程必须等到方法线程执行完才能继续往下执行。因此,主线程和方法线程的执行是串行的。而在异步中,两者能同时执行,它们的执行是并行的

    展开全文
  • 同步通信 异步通信 概念

    千次阅读 2009-07-30 16:29:00
    异步通信”是一种很常用的通信方式(效率较低) 异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端

    在串行通信中,由于是一位一位地进行数据传送。为了把每个字节区别开来,需要收发双方在传送数据的串行信息流中,加入一些标记信号位。在数据中根据所添加的标记信号位的不同方式,分成同步通信和异步通信两种。

     1.“异步通信”是一种很常用的通信方式(效率较低

     

    异步通信在发送字符时,发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。

    所传送的数据以字节为单位。每个字节前加上一位起始位,每个字节的后面加上停止位。

    好处:异步通信的好处是通信设备简单、便宜,但传输效率较低。



    2.“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。

     

    收发双方不停地发送和接收连续的同步比特流。

    一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。

    一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。

     

    同步通信是把所传送的数据以多个字节(100字节以上)为单位,在其前后添加标志。

    展开全文
  • C#异步通信概念及应用浅析 .

    千次阅读 2012-02-09 01:10:50
    C#异步通信概念及应用主要向你介绍了C#异步通信的实现方法和操作的具体的实现方法,希望对你理解和学习C#异步通信有所帮助。   C# Socket异步通讯实现详解 C#异步编程模式IAsyncResult浅析 基于事件的C#...
      
    
    • C#异步通信概念及应用主要向你介绍了C#异步通信的实现方法和操作的具体的实现方法,希望对你理解和学习C#异步通信有所帮助。
    •  
      1. C# Socket异步通讯实现详解
      2. C#异步编程模式IAsyncResult浅析
      3. 基于事件的C#异步编程模式浅析
      4. 对委托在C#异步委托和多线程中的理解
      5. C#异步委托之委托使用的时机浅析

       

      C#异步通信概念及应用的认识首先让我们来看看:在网络编程中运用Socket,常常需要长期监听某个端口,以获得Socket连接,进而执行相关操作。

      但此时,主线程就会被阻塞,无法做其他事情。为了解决这类问题,Socket类中提供了一些支持异步操作的方法,如表17-10所示。

      下表为Socket类中支持异步操作的方法

         

         

      BeginAccept()

      开始一个异步请求,以创建一个新的Socket对象来接受传入的连接请求

      EndAccept()

      结束一个异步请求,以创建一个新的Socket对象来接受传入的连接请求

      BeginConnect()

      开始一个对远程主机的异步请求

      EndConnect()

      结束一个对远程主机的异步请求

      BeginDisconnect()

      开始异步请求从远程主机断开连接

      EndDisconnect()

      结束从远程主机断开连接的异步请求

      BeginReceive()

      开始从连接的Socket中异步接收数据

      EndReceive()

      结束从连接的Socket中异步接收数据

      BeginReceiveFrom()

      开始从指定网络设备中异步接收数据

      EndReceiveFrom()

      结束从指定网络设备中异步接收数据

      BeginSend()

      开始将数据异步发送到连接的Socket

      EndSend()

      结束数据的异步发送

      BeginSendFile()

      开始将文件异步发送到连接的Socket

      EndSendFile()

      结束文件的异步发送

      BeginSendTo()

      向特定的远程主机异步发送数据

      EndSendTo()

      结束对远程主机数据的异步发送

      从上表中可以看出,这些方法都是成对出现的。这些方法能避免网络通信中的阻塞现象。这些方法的使用机制是在Begin开头的方法中注册一个回调函数,当对应的事件发生时,调用该回调函数,且在回调函数中调用对应的End开头的方法。

      下面以BeginAccept()和EndAccept()为例,说明异步方法的用法。BeginAccept()的声明如下所示。

         
      1. public IAsyncResult BeginAccept(AsynCallback callback,  
      2. object state); 

      其中,第一个参数是异步委托AsynCallb了ack,state包含此请求的状态信息的对象。

      EndAccept()方法具有三种重载形式,如下所示。

         
      1. public Socket EndAccept(IAsyncResult asynresult);  
      2.  
      3. public Socket EndAccept(out byte[] buffer,  
      4. IAsyncResult asynresult);  
      5.  
      6. public Socket EndAccept(out byte[] buffer,  
      7. out int bytesTransferred, IAsyncResult asynresult,);  

      asynresult用于存储此异步操作的状态信息及任何用户定义的数据;buffer表示需要传输的字节数据;

      bytesTransferred表示已经传输的字节数。这里的out参数与ref的用法类似,均表示传递引用。它们的区别是ref是传递参数的地址,out是返回值。

      具体用法如下所示。

         
      1. private AsyncCallback callbackOnAccpt; //定制回调方法  
      2.  
      3. private Socket s;  
      4.  
      5. ……  //C#异步通信
      6.  
      7. s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  
      8.  
      9. callbackAccpt = new AsyncCallback(this.OnAccept);//实例化回调方法  
      10.  
      11. s.BeginAccept(callbackOnAccpt, this.s); //开始异步请求  
      12.  
      13. ……  
      14.  
      15. private void OnAccept(IAsyncResult asynresult)  
      16.  
      17. {  
      18.  //C#异步通信
      19. ……  
      20.  
      21. s.EndAccept(asynresult); //结束异步请求  
      22.  
      23. ……  
      24.  
      25. }  

      BeginConnect()和EndConnect()用于对远程主机的异步连接请求。BeginConnect()的声明如下所示。

         
      1. public IAsyncResult BeginConnect(EndPoint remoteEP,  
      2. AsyncCallback callback, object state);  
      3.  
      4. public IAsyncResult BeginConnect(IPAddress address,  
      5. int port,AsyncCallback requestedcallback,object state);  
      6.  
      7. public IAsyncResult BeginConnect(IPAddress[] address,  
      8. int port,AsyncCallback requestedcallback,object state);  
      9.  //C#异步通信
      10. public IAsyncResult BeginConnect(string host,int port,  
      11. AsyncCallback requestedcallback,object state);  

      它的每个重载形式均含有AsyncCallback参数,这是这类Begin开头的方法的特点;remoteEP表示远程主机的IP和端口。

      EndConnect()的声明如下所示。

      public Socket EndConnect(IAsyncResult asynresult);

      它的参数的意义和EndAccept()完全一致。

      BeginSend()表示开始将数据异步发送到连接的Socket,它最常用的声明如下所示。

         
      1. public IAsyncResult BeginSend(byte[] buffer,  
      2. int offset,int size,SocketFlags socketFlags,  
      3.  
      4. AsyncCallback callback,object state);  

      Buffer表示要发送的数据,offset表示buffer中发送数据的位置,size为发送字节数的大小,socketFlags指SocketFlags值的按位组合。

      EndSend()的声明如下所示。

         
      1. public Socket EndSend(IAsyncResult asynresult); 

      BeginReceive()表示开始从连接的Socket中异步接收数据,它的常见声明如下所示。

         
      1. public IAsyncResult BeginReceive(byte[] buffer,  
      2. int offset,int size,SocketFlags socketFlags,  
      3.  
      4. AsyncCallback callback,object state); 

      它的参数和BeginSend()是完全一致的,这里不再赘述。

      EndReceive()的声明如下所示。

         
      1. public Socket EndReceive(IAsyncResult asynresult); 

      C#异步通信之Socket中异步通信的实现要远比同步困难,这里不再举例。简单地说,在同步中,主线程如果调用一个方法,那么主线程必须等到方法线程执行完才能继续往下执行。因此,主线程和方法线程的执行是串行的。而在异步中,两者能同时执行,它们的执行是并行的。

      C#异步通信的相关内容就向你介绍到这里,希望对你了解和学习C#异步通信有所帮助。

    展开全文
  • Socket异步通信概念及应用

    千次阅读 2010-06-09 17:02:00
    (异步);系统默认的状态发送和接收一次为8688字节(约为8.5K);在实际的过程中发送数据 和接收数据量比较大,可以设置socket缓冲区,而避免了send(),recv()不断的循环收发: // 接收缓冲区 int nRecvBuf=32*1024;//...
  • 同步通信和异步通信

    2019-06-28 16:57:14
    网络上对同步传输与异步传输的文章一大把,各种图示解说也很多,但看完终归有点一头雾水,当然了,要想真正透彻地理解这些专业性的概念,最好的方式还是在实践中找到这些概念的体现。 同步传输与异步传输虽然从名字...
  • 同步通信方式与异步通信方式

    万次阅读 多人点赞 2019-01-06 14:20:46
    同步通信方式  以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符表示,硬件要求高,通信双方须严格同步。 同步通信格式:数据以“块”为单位,一个数据块包括同步字符、数据及校验字符...
  • 异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。 所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。 同步是指:发送方发出数据后,等接收方发回...
  • 本场 Chat 主要讨论微服务之间的异步通信及其代码实践。 如何设计和实现基于 Spring 的微服务之间的异步通信。事件驱动的异步通信可以帮助您在(分别独立部署运行的)微服务之间进行异步交互。微服务架构加上事件...
  • 同步通信和异步通信的区别

    万次阅读 多人点赞 2018-07-10 08:16:23
    异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。同步是指:发送方发出数据后,等接收方发回响应...
  • 异步通信异步通信中的接收方并不知道数据什么时候会到达,收发双方可以有各自自己的时钟。发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。这种传输通常是很小的分组,...
  • 异步通信rabbitmq

    千次阅读 2018-06-05 15:24:45
     消息队列是一种异步通信模式。降低接口响应时间,提高服务性能。最常见的使用场景就是下单、减库存。如果是同步模式,接口响应时间=下单+库存。用了消息队列之后,接口响应时间=下单,基本上是提高了一倍的性能。 ...
  • 同步通信and异步通信区别

    千次阅读 2017-10-13 10:17:02
    这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。 采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息...
  • 异步通信机制

    2018-01-06 12:11:41
    转载博客http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 1异步通信概念高性能的服务器程序使用异步通信机制是必须的。异步通信就是在咱们与外部的I/O设备进行打交道的时候,外部设备的I/O和CPU比...
  • 通俗理解同步通信与异步通信 网络上对同步传输与异步传输的文章一大把,各种图示解说也很多,但看完终归有点一头雾水,当然了,要想真正透彻地理解这些专业性的概念,最好的方式还是在实践中找到这些概念的体现。 ...
  • C++串口通信编程(异步通信

    千次阅读 2019-03-29 16:05:24
    串口通信一般分为同步和异步两种方式,本博客主要讲述异步通信程序的编写,其编程步骤主要分为四步骤: 一、打开串口 Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台...
  • ros 异步通信方式

    2018-07-14 22:23:01
    转自:机器人操作系统入门https://github.com/DroidAITech/ROS-Academy-for-Beginners参考下图,我们以摄像头画面的发布、处理、显示为例讲讲topic通信的流程。在机器人上的摄像头拍摄程序是一个node(圆圈表示,我们...
  • 串口通信基本概念(一)——串行与并行通信,同步与异步通信 一、串口通信简介 串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,...
  • Android异步通信:图文详解Handler工作原理

    万次阅读 多人点赞 2018-05-03 10:07:41
    前言 在Android开发的多线程应用场景中,Handler机制十分常用 ...在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理 ...
  • 通信的基本概念 在计算机的设备与设备之间或集成电路之间常常需要进行数据传输,这里简答介绍这些通信的基本概念。 1.串行与并行通信 2.全双工、半双工和单工 3.同步与异步 在同步通讯中,数据信号所传输的内容绝...
  • Android异步通信:深入剖析Handler机制源码

    万次阅读 多人点赞 2018-05-21 10:08:17
    前言 在Android开发的多线程应用场景中,Handler机制十分常用 ...在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息...
  • 而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。  1、异步串行方式的特点  所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是...
  • 异步通信(Asynchronous) ,是指在发送端和接收端之间不存在共同的时钟。虽然传输速率远低于同步通信,但在发送端和接收端无需额外的时钟线。UART、单总线接口即为异步通信接口。 单工、半双工和全双工 单工通信...
  • 同步串行与异步串行通信

    万次阅读 多人点赞 2018-09-14 14:38:46
    串行通信是微机接口的一个重要组成部分,有着极其广泛的应用。...微机通信有串行和并行两种通信方式,并行通信可以提高数据交换速度而串行通信可以节省系统资源,降低系统成本。串行通信又分为同步串行...
  • 软件开发中同步、异步概念

    千次阅读 2017-01-10 19:59:38
     异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,...
  • 同步和异步概念

    千次阅读 2015-12-20 10:39:29
    虽然以前对同步和异步通信有所了解,但是感觉在不同的应用场景下总是容易混淆,所以今天查了查资料,做个小总结。 1. 困惑? 安卓的标准广播机制是一种完全异步执行的广播,异步的特点在于广播发出之后,所有...
  •  为了支持异步通信,J2EE 1.3规范还引入了一种新的EJB类型:消息驱动的Bean,即Message Driven Bean,简称MDB。如前所述,在JMS之前,J2EE原来是一个建立在Java RMI-IIOP通信协议基础上的同步环境,但MDB却具有接收...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,838
精华内容 47,135
关键字:

异步通信概念