socket网络编程
正文 每个socket被创建后,无论使用的是TCP协议还是UDP协议,都会创建自己的接收缓冲区和发送缓冲区。当我们调用write()/send()向网络发送数据时,系统并不会马上向网络传输数据,二十首先将数据拷贝到发送缓冲区,由系统负责择时发送数据。根据我们选用的网络协议以及阻塞模式,系统会有不同的处理。 socket缓冲区的特性: socket缓冲区在每个套接字中单独存在 socket缓冲区在创建套接字时自动生成 即使关闭套接字也会继续传送发送缓冲区中遗留的数据 关闭套接字将丢失接收缓冲区中的数据 TCP阻塞模式和非阻塞模式下的数据发送 阻塞模式下,调用write()/send()后程序将阻塞,如果发送缓冲区的可用长度大于待发送的数据,则数据将全部被拷贝到发送缓冲区,等待系统将发送缓冲区内的数据发送出去,当数据全部被拷贝到发送缓冲区后,阻塞状态将消失;如果发送缓冲区的长度小于待发送的数据长度,则数据能拷贝多少就先拷贝多少(也就是分批拷贝),一直等待直到数据可以全部被拷贝到发送缓冲区为止,调用才可返回。write()/send()调用返回后并不能保证数据已经发送到对方缓冲区了,只.......