B. 鍙戦佸簲鐢ㄧ▼搴忓啀嬈¤皟鐢╯end鍙戦?k鐨勬暟鎹? 鍋囧鍙戦佺紦瀛樼殑絀洪棿涓?0k,閭d箞鍙戦佺紦瀛樺彲鐢ㄧ┖闂翠負(fù)20-8=12k,澶т簬璇鋒眰鍙戦佺殑8k,鎵浠end鍑芥暟灝嗘暟鎹仛鎷瘋礉鍚?騫剁珛鍗寵繑鍥?192; 鍋囧鍙戦佺紦瀛樼殑絀洪棿涓?2k,閭d箞姝ゆ椂鍙戦佺紦瀛樺彲鐢ㄧ┖闂磋繕鏈?2-8=4k,send()浼?xì)杩斿?096,搴旂敤紼嬪簭鍙戠幇榪斿洖鐨勫煎皬浜庤姹傚彂閫佺殑澶у皬鍊煎悗,鍙互璁や負(fù)緙撳瓨鍖哄凡婊?榪欐椂蹇呴』闃誨(鎴栭氳繃select絳夊緟涓嬩竴嬈ocket鍙啓鐨勪俊鍙?,濡傛灉搴旂敤紼嬪簭涓嶇悊浼?绔嬪嵆鍐嶆璋冪敤send,閭d箞浼?xì)寰楀?1鐨勫? 鍦╨inux涓嬭〃鐜頒負(fù)errno=EAGAIN.
C. 鎺ユ敹搴旂敤紼嬪簭鍦ㄥ鐞嗗畬1k鏁版嵁鍚?鍏抽棴浜唖ocket: 鎺ユ敹涓繪満浣滀負(fù)涓誨姩鍏抽棴鑰?榪炴帴灝嗗浜嶧IN_WAIT1鐨勫崐鍏抽棴鐘舵?絳夊緟瀵規(guī)柟鐨刟ck).鐒跺悗,鍙戦佸簲鐢ㄧ▼搴忎細(xì)鏀跺埌socket鍙鐨勪俊鍙?閫氬父鏄?select璋冪敤榪斿洖socket鍙),浣嗗湪璇誨彇鏃朵細(xì)鍙戠幇recv鍑芥暟榪斿洖0,榪欐椂搴旇璋冪敤close鍑芥暟鏉ュ叧闂璼ocket(鍙戦佺粰瀵規(guī)柟ack); 濡傛灉鍙戦佸簲鐢ㄧ▼搴忔病鏈夊鐞嗚繖涓彲璇葷殑淇″彿,鑰屾槸鍦╯end,閭d箞榪欒鍒嗕袱縐嶆儏鍐墊潵鑰冭檻,鍋囧鏄湪鍙戦佺鏀跺埌RST鏍囧織涔嬪悗璋冪敤send,send灝嗚繑鍥?1,鍚屾椂errno璁句負(fù)ECONNRESET琛ㄧず瀵圭緗戠粶宸叉柇寮,浣嗘槸,涔熸湁璇存硶鏄繘紼嬩細(xì)鏀跺埌SIGPIPE淇″彿,璇ヤ俊鍙風(fēng)殑榛樿鍝嶅簲鍔ㄤ綔鏄鍑鴻繘紼?濡傛灉蹇界暐璇ヤ俊鍙?閭d箞send鏄繑鍥?1,errno涓篍PIPE(鏈瘉瀹?;濡傛灉鏄湪鍙戦佺鏀跺埌RST鏍囧織涔嬪墠,鍒檚end鍍忓線甯鎬竴鏍峰伐浣? 浠ヤ笂璇寸殑鏄潪闃誨鐨剆end鎯呭喌,鍋囧send鏄樆濉炶皟鐢?騫朵笖姝eソ澶勪簬闃誨鏃?渚嬪涓嬈℃у彂閫佷竴涓法澶х殑buf,瓚呭嚭浜嗗彂閫佺紦瀛?,瀵圭socket鍏抽棴,閭d箞send灝嗚繑鍥炴垚鍔熷彂閫佺殑瀛楄妭鏁?濡傛灉鍐嶆璋冪敤send,閭d箞浼?xì)鍚屼笂涓鏍?
D. 浜ゆ崲鏈烘垨璺敱鍣ㄧ殑緗戠粶鏂紑: 鎺ユ敹搴旂敤紼嬪簭鍦ㄥ鐞嗗畬宸叉敹鍒扮殑1k鏁版嵁鍚?浼?xì)鐟艟l粠緙撳瓨鍖鴻鍙栦綑涓嬬殑1k鏁版嵁,鐒跺悗灝辮〃鐜頒負(fù)鏃犳暟鎹彲璇葷殑鐜拌薄,榪欑鎯呭喌闇瑕佸簲鐢ㄧ▼搴忔潵澶勭悊瓚呮椂.涓鑸仛娉曟槸璁懼畾涓涓猻elect絳夊緟鐨勬渶澶ф椂闂?濡傛灉瓚呭嚭榪欎釜鏃墮棿渚濈劧娌℃湁鏁版嵁鍙,鍒欒涓簊ocket宸蹭笉鍙敤. 鍙戦佸簲鐢ㄧ▼搴忎細(xì)涓嶆柇鐨勫皢浣欎笅鐨勬暟鎹彂閫佸埌緗戠粶涓?浣嗗緇堝緱涓嶅埌紜,鎵浠ョ紦瀛樺尯鐨勫彲鐢ㄧ┖闂存寔緇負(fù)0,榪欑鎯呭喌涔熼渶瑕佸簲鐢ㄧ▼搴忔潵澶勭悊. 濡傛灉涓嶇敱搴旂敤紼嬪簭鏉ュ鐞嗚繖縐嶆儏鍐佃秴鏃剁殑鎯呭喌,涔熷彲浠ラ氳繃tcp鍗忚鏈韓鏉ュ鐞?鍏蜂綋鍙互鏌ョ湅sysctl欏逛腑鐨? net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes net.ipv4.tcp_keepalive_time