1. 程式人生 > >錯誤資訊:Address already in use: connect

錯誤資訊:Address already in use: connect

原因是短時間內new Socket操作過多, 而socket.close()操作並不能立即釋放繫結的埠, 而是把埠設定為TIME_WAIT狀態過段時間(預設240s)才釋放, (用netstat -na可以看到)最後系統資源耗盡, (windows上是耗盡了pool of ephemeral ports 這段區間在1024-5000之間),

一種最容易實現但是很耗時的解決辦法就是在new Socket操作之前增加TIME_WAIT時間的延遲,確保埠被釋放。