对于XON/XOFF流控制,接收方发送XON和XOFF字符通常是根据自身的接收能力来判断的。当接收方缓冲区的数据量超过一定阈值时,为了避免接收方缓冲区溢出,接收方会向发送方发送XOFF字符,表示暂时停止接收数据;当接收方的缓冲区数据被处理完后,接收方会向发送方发送XON字符,表示可以继续接收数据。
具体来说,接收方在接收到数据时,会首先将数据存储到自身的缓冲区中,并统计缓冲区中数据的数量。如果缓冲区中的数据数量已经达到了某个阈值(通常称为接收方的XOFF阈值),接收方就会向发送方发送一个XOFF字符,以便让发送方暂时停止发送数据。如果接收方的缓冲区数据被处理完后,缓冲区中的数据数量低于XON阈值,接收方就会向发送方发送一个XON字符,以便让发送方继续发送数据。
当数据发送方向接收方发送数据时,如果接收方不能及时接收数据,就会发送一个ASCII码为0x13的XOFF字符,表示发送方应该停止发送数据。如果发送方收到XOFF字符,就会暂停发送数据,直到接收方再次发送ASCII码为0x11的XON字符,表示接收方已经可以继续接收数据。