本文共 650 字,大约阅读时间需要 2 分钟。
同步对应阻塞方式,异步对应非阻塞方式。
同步意思就是,我不但要发送信息,还要等到信息被处理完才走,比较负责,易用,但效率低。异步套接字使用复杂,但效率高。 SendMessage函数就是同步函数,PostMessage是异步函数。 Winsock提供了5种I/O模型来解决异步问题,它们是select,WSAAsyncSelect(异步选择),WSAEventSelect(事件选择),overlapped(重叠)和completion port(完成端口)。 select适用于阻塞式套接字,也适用于非阻塞(异步套接字),面向连接和无连接指的都是协议。也就是说,这些术语指的并不是物理介质本身,而是用来说明如何在物理介质上传输数据的。面向连接和无连接协议可以,而且通常也确实会共享同一条物理介质。
区别: 对无连接协议来说,每个分组的处理都独立于所有其他分组,而对面向连接的协议来说,协议实现则维护了与后继分组有关的状态信息。面向连接的流协议中:通信双方数据是没有边界标志的,也就是说双方必须自行建立数据的边界标志从而确定具体的数据内容。这也意味着通信双方调用send()和recv()函数次数是不一定匹配的。
采用无连接的数据报协议时:通信双方发送的数据是边界保持的,即调用一次recvfrom函数接收到的数据一定是sendto函数发送的完整数据包,这个完整的数据包被称为数据报! 通信双方正确通信时调用recvfrom和sendto函数是一样的。转载地址:http://nhxvi.baihongyu.com/