與比特幣節點通信失敗:每個套接字地址(協議/網路地址/埠)通常只允許使用一次
我使用 cryptean 的 BitcoinLib 對另一台電腦上的比特幣節點進行 RPC 呼叫。似乎是隨機的,連接失敗,我得到一個帶有錯誤程式碼的 System.Net.Sockets.SocketException 通常只允許使用每個套接字地址(協議/網路地址/埠)。我不知道這是由於本地機器上的埠號分佈的競爭條件還是 BitcoinLib 中的錯誤。
這是完整的堆棧跟踪
- 2018-08-15 08:48:12.5570 從比特幣節點獲取交易,txid=3586d46be7bb1875fede4349849b89daf5ed73320979da211a54146c7bd90bfb。
- 2018-08-15 08:48:12.5831 與比特幣節點通信失敗。
- 2018-08-15 08:48:12.5831 嘗試讀取 JSON 響應時發生未知 Web 異常
- 2018-08-15 08:48:12.5831 System.Net.WebException:每個套接字地址(協議/網路地址/埠)通常只允許使用一次 每個套接字地址(協議/網路地址/埠)只能使用一次通常允許 —> System.Net.Http.HttpRequestException:每個套接字地址(協議/網路地址/埠)通常只允許使用一次 —> System.Net.Sockets.SocketException:每個套接字只能使用一次地址(協議/網路地址/埠)通常允許在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken) — 內部異常堆棧跟踪結束 — 在 System.Net.Http System.Threading.Tasks.ValueTask1.get_Result() 在 System.Net.Http 的 .ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken)。System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync(ValueTask 1 creationTask) 在 System.Threading.Tasks.ValueTask1.get_Result() 在 System.Threading.Tasks.ValueTask 1.get_Result() 的 HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancelToken)
在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 請求,布爾 doRequestAuth,CancellationToken cancelToken)在 System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage 請求,Uri authUri,ICredentials 憑據,布爾 preAuthenticate,布爾 isProxyAuth,布爾 doRequestAuth,HttpConnectionPool在 System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) 在 System.Net. System.Net.HttpWebRequest.GetResponse() 處的 HttpWebRequest.SendRequest() — 內部異常堆棧跟踪結束 — System.Net.HttpWebRequest 處。BitcoinLib.RPC.Connector.RpcConnector.MakeRequest[T] 處的 GetResponse()(RpcMethods rpcMethod, Object[] 參數)
- 2018-08-15 08:48:12.5831 在 BitcoinLib.RPC.Connector.RpcConnector.MakeRequest[T](RpcMethods rpcMethod, Object[] 參數)
該問題是由於我的伺服器向同一節點發出過多的同時請求引起的。發出請求的電腦意味著用完了埠。