`
xuebingnanmm
  • 浏览: 175259 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

网络编程基础概念一:同步、异步、阻塞和非阻塞

阅读更多

同步(synchronous):所谓同步方式,就是发送方发送数据包以后,不等接受方响应,就接着发送下一个数据包。

 

异步(asynchronous):异步方式就是当发送方发送一个数据包以后,一直等到接受方响应后,才接着发送下一个数据包。

 

??以上解释应该是错的,看过很多文章,刚好跟这个相反的定义,但是也有很多是跟这个解释一样的。

 

阻塞(Block):指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用StreamReader 类的Readlin ( )方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此Readlin ( )方法将一直挂在调用上,直到读到一些数据,此函数调用才返回

 

非阻塞(Unblock):指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。同样调用StreamReader 类的Readlin ( )方法读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。

 

在Windows网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。平常所说的C/S(客户端/服务器)结构的软件采用的方式就是异步非阻塞模式的。

 

同步和异步的区别

答案一:
1.异步传输

通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。起始位对应于二进制值 0,以低电平表示,占用 1 位宽度。停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽度。一个字符占用 5~8位,具体取决于数据所采用的字符集。例如,电报码字符为 5 位、ASCII码字符为 7 位、汉字码则为8 位。此外,还要附加 1 位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的差错控制。发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。典型的速率有:9 600 b/s、19.2kb/s、56kb/s等。

异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。


--------------------------------------------------------------------------------

2. 同步传输

通常,同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。

答案二:
请讲详细一些,本人比较弱智,谢谢各位 
--------------------------------------------------------------- 
 
同步是阻塞模式,异步是非阻塞模式。 
--------------------------------------------------------------- 
 
我的理解:同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另外一个线程的运行。异步的意思是两个线程毫无相关,自己运行自己的。 
 
不知对错?楼下说 
--------------------------------------------------------------- 
 
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 
 
CSDN上有讨论过: 
http://expert.csdn.net/Expert/topic/2646/2646592.xml?temp=.3842584 
http://expert.csdn.net/Expert/topic/2659/2659726.xml?temp=.1480219 
--------------------------------------------------------------- 
 
举个不太恰当的例子,就像: 
SendMessage(...) 
TRACE0("just  like  send"); 
 
PostMessage(...) 
TRACE0("just  like  WSASend  using  overlapped"); 
 
SendMessage是调用的时候不返回,等消息响应后才执行TRACE0,这就是同步. 
PostMessage是调用后马上返回,不用消息响应就执行TRACE0,这就是异步.

答案三:

 同步和异步的区别
 举个例子:普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
--------------------------------------------------------------------------------------------------------------------
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
--------------------------------------------------------------------------------------------------------------------
举个例子 打电话时同步 发消息是异步

分享到:
评论
1 楼 shengfuqiang 2011-10-25  
有点道理,不过缺少你自己的东西

相关推荐

    异步非阻塞套接字Winsock开发网络通信程序开发入门

    在本文中,我们将探讨异步非阻塞套接字在Winsock编程中的应用,这是开发网络通信程序的基础。异步非阻塞模式是Windows网络通信软件开发中的常见选择,尤其适用于C/S架构的软件。 首先,理解同步和异步、阻塞和非...

    异步非阻塞socket聊天室程序

    首先,我们关注的是"异步非阻塞"这一概念。在同步阻塞模式下,当一个进程执行socket操作时,如果数据未准备好,进程会一直等待,直到数据可用。这在处理大量并发连接时效率低下,因为服务器资源可能被单个连接长时间...

    linux网络基础和网络编程

    - 异步非阻塞:使用事件驱动,如libevent、libev、Node.js等,提高服务器处理并发的能力。 - 连接池:减少创建和销毁连接的开销,提高效率。 - 高性能服务器框架:如nginx、Apache、Tengine等,支持负载均衡、...

    cpp-netskeleton异步非阻塞多协议网络的CC库

    总的来说,cpp-netskeleton是一个强大的工具,它为C/C++开发者提供了构建异步非阻塞网络应用的基础框架。通过其高效的网络处理能力、多协议支持和模块化设计,开发者可以更专注于业务逻辑,而非底层网络细节,从而...

    一站式学习Java网络编程 全面理解BIO:NIO:AIO1

    NIO(Non-Blocking I/O)是一种异步非阻塞式 I/O 模式,服务器使用单个线程来处理多个客户端请求,提高了服务器的性能和可扩展性。 AIO(Asynchronous I/O)是一种异步非阻塞式 I/O 模式,服务器使用回调函数来处理...

    tcp与udp同步、异步通信

    本程序集包含MFC(Microsoft Foundation Classes)实现的TCP同步、异步服务器和客户端以及UDP同步服务器和客户端,对于学习MFC网络编程的初学者来说,这是一个很好的实践平台。 首先,TCP是一种面向连接的、可靠的...

    UNIX网络编程卷1:套接字联网API(第3版)源代码

    4. **非阻塞I/O和异步I/O**:探讨如何处理套接字的阻塞模式,以及如何利用异步I/O模型实现高效的网络程序。 5. **套接字选项和控制消息**:介绍setsockopt()和getsockopt()函数,以及套接字选项如何影响网络通信。...

    Twisted与异步编程入门

    Twisted是一种广泛应用于网络编程的Python库,尤其擅长于处理高并发和非阻塞IO操作。在本文档的开头,作者指出对于那些希望快速了解Twisted的人来说,本教程可能并不是最佳选择,因为真正理解和掌握Twisted及异步...

    VC++异步套接字类(AsyncSocket),进行“异步非阻塞”客户/服务器(Client/Server)网络程序设计的方法与原理。

    在IT领域,网络编程是构建分布式系统的关键技术之一,而异步套接字(AsyncSocket)是Microsoft Visual C++提供的一种高效、灵活的工具,用于实现异步非阻塞的客户端和服务器通信。异步非阻塞模式允许程序在等待数据...

    c# socket同步通讯 异步通讯 客户端 服务端 实例

    总的来说,理解并熟练掌握C#中的Socket同步和异步通讯是构建高性能网络应用的基础。无论是客户端还是服务端,都需要考虑如何有效地处理并发连接,以及如何在同步和异步模式之间做出选择,以适应不同的应用场景。同时...

    线程同步与异步套接字编程

    在计算机编程领域,尤其是网络编程中,线程同步与异步套接字编程是至关重要的概念,它们直接影响到程序的性能、稳定性和可扩展性。本文将深入探讨这两个主题,并结合实际应用进行详细阐述。 首先,我们需要理解线程...

    vc网络编程入门.pdf

    #### 一、网络编程基础概念 - **同步与异步**:这是网络编程中非常重要的两个概念。同步操作是指发送方在没有收到接收方响应之前不能进行下一步操作,而异步操作则允许发送方在发送数据之后不必等待接收方的响应就...

    unix网络编程一二卷

    1. **网络通信基础**:介绍了网络的基本概念,包括OSI模型、TCP/IP协议族以及Internet地址和端口号等基础知识。 2. **套接字API**:详细讲解了套接字的创建、连接、监听、接受、发送和接收数据等基本操作,以及各种...

    几种网络编程模型-小练习

    我们将探讨的主要模型包括:同步阻塞、同步非阻塞、异步阻塞和异步非阻塞模型。 1. **同步阻塞模型**:这是最基础的网络编程模型,也是大多数初学者最先接触的模型。在这个模型中,当一个线程发起网络请求时(如...

    浅谈socket同步和异步、阻塞和非阻塞、I/O模型

    在进行网络编程时,Socket通信是基础,而同步与异步、阻塞与非阻塞的概念则是理解Socket通信的关键。同步与异步关注的是程序调用的返回方式,而阻塞与非阻塞则涉及线程的状态。 同步与异步: 同步调用是一种同步...

    c#网络应用编程基础 习题答案(马骏)

    理解Socket的工作模式,如阻塞和非阻塞,以及异步和同步操作。 4. **TCP连接与数据传输**:TCP提供面向连接的服务,保证数据的可靠传输。理解TCP连接的三次握手和四次挥手过程,以及如何使用C#的TcpClient和Tcp...

    异步编程的实现

    异步编程是现代软件开发中的一个关键概念,尤其是在高性能、高并发的应用场景中。它允许程序在等待某个操作完成(如网络请求、文件读写)时,不阻塞主线程,而是继续执行其他任务,从而提高了系统资源的利用率和整体...

    TCP异步同步机制

    2. **非阻塞I/O**:通过设置套接字为非阻塞模式,避免在等待数据时程序被阻塞。 3. **多线程/多进程**:创建多个执行线程或进程,每个负责一个连接,提高并发性。 4. **事件驱动编程**:例如使用`select()`, `poll...

    socket 多线程 例程 非阻塞模式

    总之,"socket多线程例程非阻塞模式"是一个实用的编程实例,涵盖了网络通信、多线程以及异步处理的关键技术,对于学习和理解这些概念非常有价值。通过对源代码的分析和实践,开发者能够提升自己的网络编程技能,为...

    acl框架库是一个C语言网络框架库,主要包含:服务器开发框架、同步异步网络通讯、常用数据结构、进程池线程池、流式xmljson

    2. **同步异步网络通讯**:ACL支持同步和异步两种网络通信模式。同步模式通常适用于简单、顺序的网络操作,而异步模式则适用于处理大量并发连接,提高系统的并发处理能力。异步模式利用事件驱动模型,如Epoll或...

Global site tag (gtag.js) - Google Analytics