close 与 shutdown 区别
-
close
终止了数据传送的两个方向close A
之后,既不能往A中写入数据,也不能从A读取数据。
- A不能发送给B,B可以发给A,A发送RST表示连接重置,B收到RST之后,如果再次调用write,就会产生
SIGPIPE
信号
-
可以将TCP看成全双工管道
-
shutdown
可以可以有选择的终止某个方向数据传送或者2个方向 -
shutdown
:how=1
关闭写的一端,可以保证对等方接收到EOF段,不理会引用计数shutdown(conn,SHUT_WR)
, 而不管其他进程是否已经打开了套接字。而close
不能保证,知道套接字引用计数减为0时才发送。也就是说所有的进程都关闭了套接字。
进一步改进回射客户程序
-
Ctrl+c是强制中断程序的执行。
-
Ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态
-
Ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。