qqgzch 2014-08-31 10:48
浏览 3032

安卓平台的vpn调用系统net.vpn类连接失败

类库来源`Github.

APK

大部分代码是系统settings-vpn页面的

    onError()
    java.io.IOException: cannot start service: mtpd
    at com.android.server.vpn.DaemonProxy.start(DaemonProxy.java:75)
    at com.android.server.vpn.VpnDaemons.startDaemon(VpnDaemons.java:106)
    at com.android.server.vpn.VpnDaemons.startMtpd(VpnDaemons.java:127)
    at com.android.server.vpn.VpnDaemons.startPptp(VpnDaemons.java:56)
    at com.android.server.vpn.PptpService.connect(PptpService.java:32)
    at com.android.server.vpn.VpnService.onConnect(VpnService.java:137)
    at com.android.server.vpn.VpnServiceBinder$2.run(VpnServiceBinder.java:114)
    at java.lang.Thread.run(Thread.java:838)


    (VpnServiceBinder.java:114)
    private synchronized boolean connect(final VpnProfile p,
            final String username, final String password) {
        if (mService != null) return false;
        final VpnService s = mService = createService(p);

        new Thread(new Runnable() {
            public void run() {
                s.onConnect(username, password);
            }
        }).start();
        return true;
    }

    (VpnService.java:137)
        synchronized boolean onConnect(String username, String password) {
        try {
            setState(VpnState.CONNECTING);

            mDaemons.stopAll();
            String serverIp = getIp(getProfile().getServerName());
            saveLocalIpAndInterface(serverIp);
            onBeforeConnect();
            connect(serverIp, username, password);
            waitUntilConnectedOrTimedout();
            return true;
        } catch (Throwable e) {
            onError(e);
            return false;
        }
    }




    (PptpService.java:32)
    class PptpService extends VpnService<PptpProfile> {
    @Override
    protected void connect(String serverIp, String username, String password)
            throws IOException {
        System.err.println(serverIp+"  "+username+"  "+password);
        PptpProfile p = getProfile();
        getDaemons().startPptp(serverIp, username, password,
                p.isEncryptionEnabled());
    }
    }



     (VpnDaemons.java:56)
        public DaemonProxy startPptp(String serverIp, String username,
            String password, boolean encryption) throws IOException {
        return startMtpd(PPTP, serverIp, PPTP_PORT, null, username, password,
                encryption);
    }



      (VpnDaemons.java:127)
         private DaemonProxy startMtpd(String protocol,
            String serverIp, String port, String secret, String username,
            String password, boolean encryption) throws IOException {
        ArrayList<String> args = new ArrayList<String>();
        args.addAll(Arrays.asList(protocol, serverIp, port));
        if (secret != null) args.add(secret);
        args.add(PPP_ARGS_SEPARATOR);
        addPppArguments(args, serverIp, username, password, encryption);

        DaemonProxy mtpd = startDaemon(MTPD);
        mtpd.sendCommand(args.toArray(new String[args.size()]));
        return mtpd;
    }


       (VpnDaemons.java:106)
        private synchronized DaemonProxy startDaemon(String daemonName)
            throws IOException {
        DaemonProxy daemon = new DaemonProxy(daemonName);
        mDaemonList.add(daemon);
        daemon.start();
        return daemon;
    }



     (DaemonProxy.java:75)
        void start() throws IOException {
        String svc = mName;

        Log.i(mTag, "Start VPN daemon: " + svc);
        SystemProperties.set(SVC_START_CMD, svc);

        if (!blockUntil(SVC_STATE_RUNNING, WAITING_TIME)) {
            throw new IOException("cannot start service: " + svc);
        } else {
            mControlSocket = createServiceSocket();
        }
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)