Dart服务器拒绝本地网络中的连接

Dart服务器拒绝本地网络中的连接,dart,dart-html,Dart,Dart Html,我在MacMavericks和UbuntuLinux上运行Dart。我才刚刚开始;而且,没有一个示例能够通过我的本地网络运行。当我在Ubuntu上安装服务器并尝试用mac访问时,什么也没发生。当我尝试从Ubunutu访问时,我得到一个“java.net连接被拒绝错误”,这两台机器上的Curl也是一样(连接被拒绝)。所有示例都可以从localhost作为客户机/服务器正常运行。客户端应用程序或浏览器都无法连接。在家庭网络中正常工作的所有其他服务器/客户端。防火墙正常,我仔细检查了端口号。所需端口上

我在MacMavericks和UbuntuLinux上运行Dart。我才刚刚开始;而且,没有一个示例能够通过我的本地网络运行。当我在Ubuntu上安装服务器并尝试用mac访问时,什么也没发生。当我尝试从Ubunutu访问时,我得到一个“java.net连接被拒绝错误”,这两台机器上的Curl也是一样(连接被拒绝)。所有示例都可以从localhost作为客户机/服务器正常运行。客户端应用程序或浏览器都无法连接。在家庭网络中正常工作的所有其他服务器/客户端。防火墙正常,我仔细检查了端口号。所需端口上没有冲突的服务器。我尝试了Dart站点和其他站点的5个不同脚本,每个脚本都有CORS功能,但没有任何连接,包括下面的示例, -Github

示例代码

/*一个简单的web服务器,通过返回
*data.json文件的内容,并响应所有**POST**请求
*通过覆盖data.json文件的内容
* 
*使用http://localhost:8080  
* 
*提供CORS标题,因此可以从任何其他页面访问
*/
导入“dart:io”;
最终主机=“127.0.0.1”;//例如:本地主机
最终端口=8080;
最终数据文件=“DATA.json”;
void main(){
绑定(主机,端口)。然后((服务器){
侦听((HttpRequest请求){
开关(请求方法){
案例“GET”:
手持设备(请求);
打破
案例“职位”:
扶手柱(请求);
打破
案例“选项”:
处理(请求);
打破
默认值:defaultHandler(请求);
}
}, 
onError:打印错误);
打印(“在http://$HOST:$PORT上侦听GET和POST”);
},
onError:打印错误);
}
/**
*通过读取data.json的内容来处理GET请求
*并将其返回给客户
*/
无效处理集(HttpRequest请求){
HttpResponse res=请求响应;
打印(${req.method}:${req.uri.path});
阿德克谢德(res);
var文件=新文件(数据文件);
if(file.existsSync()){
add(HttpHeaders.CONTENT_类型,“application/json”);
file.readAsBytes().asStream().pipe(res);//自动关闭输出流
}
否则{
var err=“找不到文件:$DATA\u file”;
res.write(err);
res.close();
}
}
/**
*通过覆盖data.json的内容来处理POST请求
*将同一组数据返回到客户端。
*/
无效handlePost(HttpRequest请求){
HttpResponse res=请求响应;
打印(${req.method}:${req.uri.path});
阿德克谢德(res);
请求侦听((列表缓冲区){
var文件=新文件(数据文件);
var ioSink=file.openWrite();//将数据保存到文件中
添加(缓冲区);
ioSink.close();
//将相同的结果返回给客户端
res.add(缓冲区);
res.close();
},
onError:打印错误);
}
/**
*添加跨站点标头以允许从页面访问此服务器
*此服务器不提供服务
* 
*见:http://www.html5rocks.com/en/tutorials/cors/ 
*及http://enable-cors.org/server.html
*/
void addCorsHeaders(HttpResponse res){
res.headers.add(“访问控制允许原点”、“*”);
添加(“访问控制允许方法”、“发布、获取、选项”);
res.headers.add(“访问控制允许头”、“来源、X请求、内容类型、接受”);
}
无效处理选项(HttpRequest请求){
HttpResponse res=请求响应;
阿德克谢德(res);
打印(${req.method}:${req.uri.path});
res.statusCode=HttpStatus.NO\u内容;
res.close();
}
void defaultHandler(HttpRequest请求){
HttpResponse res=请求响应;
阿德克谢德(res);
res.statusCode=HttpStatus.NOT_FOUND;
res.write(“未找到:${req.method},${req.uri.path}”);
res.close();
}
无效打印错误(错误)=>打印错误;
data.json

{
“语言”:“飞镖”,
“目标”:[“dartium”、“javascript”、“Android?”],
“网站”:{
“主页”:“www.dartlang.org”,
“api”:“api.dartlang.org”
}

}

我认为这是因为Dart服务器配置为只侦听本地主机上的客户端。您需要使其侦听任何IPv4/v6客户端,以便通过网络从服务器接收任何响应

更改行
final HOST=“127.0.0.1”
最终主机=InternetAddress.ANY\u IP\u V4
final HOST=InternetAddress.ANY_IP_V6


它应该能让它工作。

非常感谢你。工作起来很有魅力!