当前位置:编程学习 > wap >>

头疼问题!求助!Android系统如何能绑定80端口创建socket?

想使用一下手机的80端口创建socket,小米2A手机已root过,代码如下:
public class SystemManager extends Activity
{
    public static boolean RootCommand(String command)
    {
        Process process = null;
        DataOutputStream os = null;
        try
        {
            process = Runtime.getRuntime().exec("su");
            os = new DataOutputStream(process.getOutputStream());
            os.writeBytes(command + "\n");
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
        } catch (Exception e)
        {
            Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
            return false;
        } finally
        {
            try
            {
                if (os != null)
                {
                    os.close();
                }
                process.destroy();
            } catch (Exception e)
            {
            }
        }
        Log.d("*** DEBUG ***", "Root SUC ");
        return true;
    }
}


public class MainActivity extends Activity {

Button btn1,btn2; 
int port = 80 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

        String apkRoot="chmod 777 "+getPackageCodePath();
        SystemManager.RootCommand(apkRoot);

        ServerSocket server;
try {
server = new ServerSocket(port);
Socket conn = server.accept();
} catch (IOException e) {
e.printStackTrace();
}     
}

权限

程序运行时,手机显示程序已获取root权限,但是在new ServerSocket(port)时就会异常,提示错误bind failed:EACCES(permission denied),我要是把端口改为1024以上的就可以正常监听端口,请问问题究竟出在哪里呢??? android 绑定端口 80端口 权限 --------------------编程问答-------------------- 没绑定过80,同样好奇 --------------------编程问答--------------------
引用 1 楼 DrSmart 的回复:
没绑定过80,同样好奇
貌似没人做过呢 --------------------编程问答-------------------- 置顶置顶置顶 --------------------编程问答-------------------- 在Android上面绑定80端口应该比较难。


        ServerSocket server;
        try {
            server = new ServerSocket(port);
            Socket conn = server.accept();
        } catch (IOException e) {
            e.printStackTrace();
        }     
    这个单独放置Service里面,独立一个Thread 比较好, --------------------编程问答-------------------- 80端口不是访问网络的时候占用的么?已经绑定了再次绑定的话必然报错啊 --------------------编程问答--------------------
引用 5 楼 A328240784 的回复:
80端口不是访问网络的时候占用的么?已经绑定了再次绑定的话必然报错啊

大哥,我真不好怎么回答你...访问网络是访问目标端的80端口 --------------------编程问答--------------------
引用 4 楼 birdsaction 的回复:
在Android上面绑定80端口应该比较难。


        ServerSocket server;
        try {
            server = new ServerSocket(port);
            Socket conn = server.accept();
        } catch (IOException e) {
            e.printStackTrace();
        }     
    这个单独放置Service里面,独立一个Thread 比较好,

我知道,这只是测试能否成功的,放不放到Thread里对能不能绑定端口没有联系吧。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,