Android服务监听特定端口

10
我想知道如何设置一个监听特定端口的Android服务,例如http://127.0.0.1:12345。请注意,不要删除HTML标签。
1个回答

7

实现你的服务并使用ServerSocket类来监听传入连接并对其进行操作。但不要在UI线程上调用ServerSocket.accept(),否则会导致应用程序无响应。相反,创建一个新线程或根据实际情况,可以使用AsyncTask


@Steven Prentice 你好。非常感谢你的回答,对我帮助很大。我在AsyncTask中尝试了一下,但是失败了。然后我在单独的线程中尝试了一下,结果就像魔术一样成功了。我想知道为什么ServerSocket会这样。当然,我也在UI线程中尝试过,但是同样失败了。如果我的Activity的唯一目的是在点击按钮时启动服务器,那么它挂起又有什么关系呢? - Jason Krs
@JasonKrs:只要你在doInBackground()中处理ServerSocket业务,它应该可以与AsyncTask一起使用。如果您能在此处共享代码,那么我们可以提供更多帮助。就UI线程而言,这是Android提供的限制(可以等待任务在约5秒钟内完成),因为UI线程负责很多事情。从文档中可以看出:系统不会为每个组件实例创建单独的线程。在同一进程中运行的所有组件都在UI线程中实例化,并且对每个组件的系统调用都从该线程中分派。 - Uncaught Exception
@UncaughtException 在 doInBackground() 中出现问题了... 我觉得我可能没有按照正确的方式工作... 也许这就是失败的原因... 不管怎样,项目中已经完成了很多事情,所以我不会重新编写那个功能... 我将继续使用老式的线程。;-) - Jason Krs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接