标签:puts 阻塞 ast 建立 alt inpu 响应 读写 9.png
一、TCP状态转化
TCP连接的状态转换图如下
注:SYN 表示建立链接、FIN 表示关闭链接、ACK 表示响应、PSH 表示有数据传输、RST 表示链接重置。
1 建立连接的步骤(三次握手)
2 断开链接的步骤(四次挥手)
二、Socket
一个 Socket 实例代表了一个通信链路,当连接建立成功后,服务器和客户端都会各拥有一个 Socket 实例,且这两个实例都会拥有一个 InputStream 和 OutputStream,以此来传输数据。在 InputStream 和 OutputStream 中会各有一个缓存区,数据写入和读取都是通过这个缓存区完成的。通过 OutputStream 将数据写入到其 SendQ 队列中,当队列填满时,数据将被传递到 InputStream 的 RecvQ 队列中,如果这时 RecvQ 已满,则 OutputStream 的 write() 方法将会阻塞,直到 RecvQ 队列有足够空间容纳 SendQ 发送的数据。要注意的是,缓存区的大小及读写宿舍非常影响连接的传输效率,而且由于是阻塞式,如果两遍同时传递数据有可能发生死锁。
Socket源码分析:
public Socket() // 创建一个无连接的socket
public Socket(Proxy proxy) //
标签:puts 阻塞 ast 建立 alt inpu 响应 读写 9.png
原文地址:http://www.cnblogs.com/tengyunhao/p/7302575.html