同じポートにバインドされた2つのtcp接続を作成しようとしています。 java.net.BindException: Address already in use
というエラーが表示されます。これはどちらもポートとして18333
を使用しているので意味がありますが、一意のホストを持つポートで2つの接続を行うには何らかの方法が必要です。私はguide in the akka tcp manualと一緒に従っています。どうすればこの作品を作れますか?プロトコルは18333
に接続を作成する必要があると言いますが、一度に1つのピアしか持つことができない場合は、プロトコルのp2p部分が役に立たなくなります。ここで Akkaは同じポートで2つのTcp接続を作成します
val probe1 = TestProbe()
val probe2 = TestProbe()
val client1 = system.actorOf(Client.props(TestNet3, probe1.ref))
val client2 = system.actorOf(Client.props(TestNet3, probe2.ref))
val local = new InetSocketAddress(18333)
val remote1 = new InetSocketAddress("testnet-seed.bitcoin.petertodd.org", 18333)
client1 ! Tcp.Connect(remote1,Some(local))
probe1.expectMsgType[Tcp.Connected]
val remote2 = new InetSocketAddress("testnet-seed.bluematt.me", 18333)
client2 ! Tcp.Connect(remote2,Some(local))
probe2.expectMsgType[Tcp.Connected]
client1 ! Tcp.Abort
client2 ! Tcp.Abort
あなたはあなたのソケットのアッカセットSO_REUSEADDRを作る方法を探す必要があります。これはTcp.Connectで発生する必要があります。ソケットオプションとしてSO.ReuseAddr(true)のようなものを渡す必要があるでしょう。 – midor
あなたの答えは正解です。あなたが正式な投稿を書いたければ、私はあなたに答えを与えるでしょう。 –
私は答えを書いていましたが、それがまさにSO.ReuseAddr(真実)だったかどうか教えてください。私の頭の後ろにそれがあったからですが、私はdocリンクを見つけることができませんでした。 – midor