TCP/IP套接字编程中同步传输和异步传输有什么区别?

10

我是C++新手,正在尝试基于boost::asio库开发客户端-服务器应用程序。我仍然无法正确理解同步和异步模式之间的区别。我以前学习过诸如HTTP和AJAX等Web协议服务。根据这个解释,HTTP是同步的,而AJAX是异步的。在TCP套接字通信方面,同步和异步有何不同?从企业级多线程应用程序开发的角度来看,哪种模式更好,为什么?

据我了解,同步模式下,客户端会阻塞一段时间,直到它从服务器接收到数据包/消息。而在异步模式下,客户端可以在不阻塞当前操作的情况下执行另一个操作。这有何不同?异步是否等同于UDP?似乎它并不关心是否接收到传输确认。

1个回答

18
  1. TCP传输一直是异步的。同步或异步的是API的行为。同步API在你调用时执行操作:例如,send()将数据移动到TCP发送缓冲区,并在完成后返回。异步API在你调用它时启动,独立执行,然后通过回调或提供可查询的句柄通知你完成。

  2. HTTP是同步的,因为你按顺序发送请求、接收响应、显示或处理响应

  3. Ajax仅在与周围HTTP请求的页面请求/响应周期无关的情况下是异步的。这是一个不太准确的术语选择。最好使用类似“嵌套”,“带外”的术语...


谢谢:),那么哪个API对于“企业级多线程应用程序”会更好呢?我正在尝试开发一个许可模型,它必须足够强大,以处理请求并将响应发送给客户端软件。 - abhi abhi
我不会考虑使用异步API来处理这个问题。毕竟,这不是一个企业级数据库,每天需要处理2亿次事务。 - user207421
嗯...那么同步会更好吗?虽然它不完全是一个数据库应用程序,但有些文件传输和信息(以字节为单位)的传输经常是必要的,每10分钟将传输近20-30 MB... - abhi abhi
1
20-30MB 用于许可证?我认为您需要更好地解释您的预期使用情况。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接