Curl可以连接到本地主机上的Iron服务器,但Scala间歇性地不能
在我的Rust应用程序中,我启动熨斗,如下所示:Curl可以连接到本地主机上的Iron服务器,但Scala间歇性地不能,scala,rust,iron,Scala,Rust,Iron,在我的Rust应用程序中,我启动熨斗,如下所示: let host: &str = &format!("localhost:{}", port); info!("Server running at http://{}", host); Iron::new(Chain::new(router)).http(host).expect("Could not start Iron server"); 它答复说: INFO服务器正在运行http://localhost:3000 我可以
let host: &str = &format!("localhost:{}", port);
info!("Server running at http://{}", host);
Iron::new(Chain::new(router)).http(host).expect("Could not start Iron server");
它答复说:
INFO服务器正在运行http://localhost:3000
我可以卷曲它:
$curl”http://localhost:3000/v1/foo"
{“bar”:“baz”}
但是,在Scala中,我无法连接:
$scala
欢迎使用Scala 2.11.8(Java热点(TM)64位服务器虚拟机,Java 1.8.0(40))。
键入要计算的表达式。或者尝试:帮助。
scala>scala.io.Source.fromURL(“http://localhost:3000/v1/foo.mkString
java.net.ConnectException:连接被拒绝
位于java.net.PlainSocketImpl.socketConnect(本机方法)
spray客户端也无法连接:
spray.can.Http$connectionAttentiteFailedException:到127.0.0.1:3000的连接尝试失败
这两次尝试都来自同一IP,并且本地主机是正确的。Iron服务器对失败的连接请求不做任何记录
客户端和服务器中的localhost
与127.0.0.1
的不同组合不能解决问题。我误诊了这个。在Rust客户端中使用127.0.0.1
可以解决问题
休息片刻后,代码开始工作。我不记得我是否重新启动了熨斗。然后我对它进行了几个小时的开发。在某个阶段,它又停止了工作。JVM和/或Iron服务器的重启无助于解决问题
这不是我的Rust应用程序特有的
我可以用hello world Iron应用程序示例重新创建问题
$git克隆https://github.com/iron/iron.git
$(cd熨斗和货物运行--示例hello)
然后
$curl”http://localhost:3000/"
你好,世界!
但是
$scala
scala>scala.io.Source.fromURL(“http://localhost:3000/.mkString
java.net.ConnectException:连接被拒绝
- OSX 10.11.6
- 货运0.13.0-每晚(9399229 2016-09-14)
- 还针对每夜0.13.0次的货物进行了测试(19cfb67 2016-09-28)
127.0.0.1
,同时该错误未解决。根据“Iron将默认解析('localhost')到IPv6,而您的其他服务使用IPv4”
将Iron绑定到
127.0.0.1
,同时该错误尚未解决。在您的Scala应用程序中,如果您连接到127.0.0.1,而不是本地主机,这会起作用吗?(或者类似地,如果您在127.0.0.1上启动rust应用程序?)谢谢您的建议Erik。吃过午饭回来后,它开始工作了。我不知道到底出了什么问题,但我认为我犯了一个简单的错误。删除此问题…恢复了此问题。这是一个间歇性问题!猜测1:您正在Windows上运行,防火墙或防病毒软件正在阻止Java连接任何地方。感谢您在Scala应用程序中遇到的后续有趣问题,如果您连接到127.0.0.1,而不是localhost,这是否可行?(或者类似地,如果您在127.0.0.1上启动rust应用程序?)谢谢您的建议Erik。吃过午饭回来后,它开始工作了。我不知道到底出了什么问题,但我认为我犯了一个简单的错误。删除此问题…恢复了此问题。这是一个间歇性问题!猜测1:您正在Windows上运行,防火墙或防病毒软件正在阻止Java连接到任何地方。感谢您提出的后续有趣问题