在實際使用中失暴,有時候啟動會遇到bind: address already in use
的問題罗售,
但是通過lsof -i :10080
命令往往又看不到哪個進程占用了端口锅劝,
這時候就需要使用另一個命令了
netstat -an | grep "10080"
tcp 0 0 10.200.20.39:10080 10.200.20.40:2380 TIME_WAIT
tcp 0 0 10.200.20.39:10080 10.200.20.41:2380 TIME_WAIT
發(fā)現還存在處于TIME_WAIT的連接臀稚。
原因是什么呢
當你調用close()系統調用的時候,你只是close了socket的interface肋联,并不是socket本身威蕉。具體什么時候關閉socket取決于內核,這個時間一般在20s到4分鐘橄仍,官方的說法是4分鐘韧涨,關于TIME_WAIT的具體說明詳見 2.7 Please explain the TIME_WAIT state..