Android手机上的Web服务器

Android手机上的Web服务器,android,restlet,Android,Restlet,我正试图在我的Android手机上使用Restlet框架建立一个web服务器。我的想法是建立一个游戏,其中一部手机在地图上创建一些标记,然后可以使用rest直接传输到其他手机。首先(为了简单起见),我想传输对象的列表 在我的电脑上运行一个服务器似乎工作正常,但当我将代码传输到我的Android应用程序时,它不会启动服务器。代码如下: Component serverComponent = new Component(); serverComponent.getServers().add(Prot

我正试图在我的Android手机上使用Restlet框架建立一个web服务器。我的想法是建立一个游戏,其中一部手机在地图上创建一些标记,然后可以使用rest直接传输到其他手机。首先(为了简单起见),我想传输
对象的
列表

在我的电脑上运行一个服务器似乎工作正常,但当我将代码传输到我的Android应用程序时,它不会启动服务器。代码如下:

Component serverComponent = new Component();
serverComponent.getServers().add(Protocol.HTTP, 80);  
final Router router = new Router(serverComponent.getContext().createChildContext());  
router.attach("/gamedata", GameDataResourceServer.class);  
serverComponent.getDefaultHost().attach(router);  
serverComponent.start();  
当行
serverComponent.start()时时,将引发此异常:
java.net.BindException:权限被拒绝(可能缺少INTERNET权限)
,尽管INTERNET权限在清单文件中。搜索一些教程也没有帮助。结果要么是客户端应用程序,要么是非常复杂的场景。

有人能举一个简单应用程序的例子吗?

在Unix类型的环境中,您通常需要根访问权限才能绑定到1024以下的TCP端口。您正在尝试绑定到端口80,除非您以root用户身份运行此代码,否则操作系统将阻止该请求。

因此,您希望实现一个仅在专用WiFi网络中可用的服务器,还是希望启动一个向公用internet开放的服务器?专用WiFi应该可以完成此任务,但如果可以从公用网络访问则更好,如果,例如,没有WiFi将数据传输到其他手机。服务器只需要运行一段短时间,就可以让所有玩家下载数据。这意味着我需要选择一个1024以上的端口?那么,如果在WiFi上运行,如何确保此端口不被防火墙阻止?是的,您必须使用更高的端口。不保证它不会被路由器阻塞,但这实际上只是一个问题,如果你想允许从路由器外部连接。如果是这样的话,你必须让用户知道正在使用什么端口,这样他们才能管理。@Alex P:这就是服务器的工作方式,出于安全原因,在android上运行服务器可能会变得很有挑战性,特别是当你处于不受控制(未知)的环境中时如果在3G上运行服务器,我需要担心哪些端口?这里有一个“官方”注册服务和端口的列表,但你可能不会看到大多数都在Android上使用。