Full-Node

與比特幣節點通信失敗:每個套接字地址(協議/網路地址/埠)通常只允許使用一次

  • January 18, 2019

我使用 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[] 參數)

該問題是由於我的伺服器向同一節點發出過多的同時請求引起的。發出請求的電腦意味著用完了埠。

引用自:https://bitcoin.stackexchange.com/questions/78241