C# 调试Akka.NET远程连接(无法连接-绑定失败)
使用作为Akka.NET源代码的一部分提供的示例聊天服务器/客户端项目,我尝试对其进行修改,使其能够在网络上的两台计算机上成功运行 我有两个系统通过这样的路由器连接C# 调试Akka.NET远程连接(无法连接-绑定失败),c#,akka.net,akka-remote-actor,akka.net-networking,C#,Akka.net,Akka Remote Actor,Akka.net Networking,使用作为Akka.NET源代码的一部分提供的示例聊天服务器/客户端项目,我尝试对其进行修改,使其能够在网络上的两台计算机上成功运行 我有两个系统通过这样的路由器连接 192.168.0.29 (Server) <---------------| Router |---------------> 192.168.0.52 (Client) 客户: akka { actor { provider = remote } remote {
192.168.0.29 (Server) <---------------| Router |---------------> 192.168.0.52 (Client)
客户:
akka {
actor {
provider = remote
}
remote {
dot-netty.tcp {
port = 0 #Tell Akka that this is a client connection/use random port.
hostname = 192.168.0.29 #Tell Akka.NET which remote instance to connect to
}
}
}
不幸的是,尽管我能够成功地在本地连接到聊天服务器,但无论我如何配置我的Hocon,我似乎都无法将远程实例绑定到位于机器上的服务器参与者192.168.0.29
我收到的特定错误消息
[ERROR][27/11/2019 4:58:36 PM][Thread 0004][Akka.Remote.Transport.DotNetty.TcpTransport] Failed to bind to 192.168.0.29:0; shutting down DotNetty transport.
Cause: System.Net.Sockets.SocketException (10049): The requested address is not valid in its context
at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
此错误消息向我表明,Akka.NET无法访问任何可用套接字
具有讽刺意味的是,不久前,它帮助我解决了连接问题,但直到最近我才再次使用Akka.NET
我注意到这两台机器都关闭了防火墙,可以成功地相互ping,我还使用了各种设置组合
Akka.NET服务器/客户端应用程序的原始源代码位于我的当前版本
有人能提供一些关于我可能做错了什么以及如何改进Akka.NET远程连接调试的见解吗?例如,是否有一种方法可以验证服务器
192.168.0.29
上的Actor系统是否可以从192.168.0.52
外部访问 哈哈,在发帖5分钟后,我终于能够确定解决方案(尽管它并不理想)
解决方案是,当您在客户端应用程序上实例化ActorSystem
时,实际上并不是将本地actor系统连接到远程系统,而是创建一个actor系统的本地实例,该实例本身正在侦听随机端口
当您创建ActorSelection()
引用时,远程连接本身就会发生
所以我要做的就是把我的客户hocon从
hostname = 192.168.0.29
到
然而,这造成了最后一个(尽管相当小)问题。我现在需要一个不同的hocon文件,用于本地运行的实例和远程运行的实例。诚然,这可能通过代码来解决
我很乐意将能够提出解决这个问题的方案的人标记为解决方案
hostname = 192.168.0.29
hostname = 192.168.0.52