GVKun编程网logo

Java服务器和Android客户端之间的SSL连接失败(java服务器端和客户端连接)

7

如果您想了解Java服务器和Android客户端之间的SSL连接失败和java服务器端和客户端连接的知识,那么本篇文章将是您的不二之选。我们将深入剖析Java服务器和Android客户端之间的SSL连

如果您想了解Java服务器和Android客户端之间的SSL连接失败java服务器端和客户端连接的知识,那么本篇文章将是您的不二之选。我们将深入剖析Java服务器和Android客户端之间的SSL连接失败的各个方面,并为您解答java服务器端和客户端连接的疑在这篇文章中,我们将为您介绍Java服务器和Android客户端之间的SSL连接失败的相关知识,同时也会详细的解释java服务器端和客户端连接的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

Java服务器和Android客户端之间的SSL连接失败(java服务器端和客户端连接)

Java服务器和Android客户端之间的SSL连接失败(java服务器端和客户端连接)

我正在尝试在Java主机和android客户端之间设置双向身份验证SSL连接。不知道为什么它没有连接。以下是Android客户端应用和Java服务器的代码。

客户代码:

private SSLContext createSSLContext(final Context cont){
    SSLContext ssl_cont = null;
    try {
        Log.d(TAG,"TrustStore - Initializing");   
        KeyStore trustStore = KeyStore.getInstance("BKS");
        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        InputStream trustStoreStream = cont.getResources().openRawResource(R.raw.myclienttruststore);
        trustStore.load(trustStoreStream,"client".toCharArray());
        trustManagerFactory.init(trustStore);
        Log.d(TAG,"TrustStore - Initialized");

        // Setup keystore
        Log.d(TAG,"KeyStore - Initializing");
        KeyStore keyStore = KeyStore.getInstance("BKS");
        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        InputStream keyStoreStream = cont.getResources().openRawResource(R.raw.myclient);
        keyStore.load(keyStoreStream,"client".toCharArray());
        keyManagerFactory.init(keyStore,"client".toCharArray());
        Log.d(TAG,"KeyStore - Initialized");

        ssl_cont = SSLContext.getInstance("TLS");
        ssl_cont.init(keyManagerFactory.getKeyManagers(),trustManagerFactory.getTrustManagers(),null); 
    } catch (Exception e) {
        // TODO Auto-generated catch block
        alertbox("SSLClient","ERROR: " + e.getMessage());
        Log.d(TAG,"ERROR: " + e.getMessage());
    }
    return ssl_cont;
}

OnClickListener onConnClick = new OnClickListener() {

    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        try {
            // Setup the SSL context to use the truststore and keystore
            Log.d(TAG,"Started..");
            SSLContext ssl_context = createSSLContext(cont);
            Log.d(TAG,"here 1...");
            SSLSocketFactory socketFactory = (SSLSocketFactory) ssl_context.getSocketFactory();
            Log.d(TAG,"here 2...");
            socket = (SSLSocket) socketFactory.createSocket(ipadd.getText().toString().trim(),Integer.parseInt(port.getText().toString().trim()));
            Log.d(TAG,"here 3...");
            dataOut = new DataOutputStream(socket.getOutputStream());
            dataIn = new DataInputStream(socket.getInputStream());
            dataOut.writeUTF("Hello !!");
            msgin.setText("Connected");
            Log.d(TAG,"Completed..");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            msgin.setText("Not connected");
            alertbox("Main","ERROR: " + e.getMessage());
            Log.d(TAG,"ERROR: " + e.getMessage());
        }
    }
};

服务器代码:

    try {
        mySSLServerFac = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
        mySSLServerSocket = (SSLServerSocket) mySSLServerFac.createServerSocket(9999);
        System.out.println("Listening on 9999\n");
        mySSLSocket = (SSLSocket) mySSLServerSocket.accept();           
        DataInputStream input = new DataInputStream(mySSLSocket.getInputStream());
        DataOutputStream output = new DataOutputStream(mySSLSocket.getOutputStream());      
        do{
            System.out.println("Remote IP Address : " + mySSLSocket.getInetAddress());
            msg = input.readUTF().toString();
            System.out.println(msg);
            java.util.Scanner sc = new java.util.Scanner(System.in);
            output.writeUTF(sc.nextLine());
        }while(msg != "exit");
        System.out.println(msg);                
    } catch (Exception e) {
        e.printStackTrace();
    }

我在服务器上遇到“没有共同的密码套件”错误。由于我不在SSL连接设置中。如果您发现错误或主要问题,请允许我提供帮助。

这是我用来创建证书和信任库的链接。我创建的Truststore和kestore在这里

我正在使用Android 2.2和BKSProvider 1.46,请告诉我我要去哪里了。我必须尽快结束这个项目。

提前致谢。

android socket 问题 android 客户端 与java服务器socket通信 ,当服务器突然中断后

android socket 问题 android 客户端 与java服务器socket通信 ,当服务器突然中断后

1、android socket 问题 android 客户端 与java服务器socket通信 ,当服务器突然中断后.

android 客户端怎么知道 中断了,怎么自动进行重新连接.

2、当客户端从没有网络 恢复至有网络,怎么去连接服务器。

android studio与Java服务器之间的通信问题GRPC

android studio与Java服务器之间的通信问题GRPC

如果您查看gRPC存储库中的hello world example,则protobuf-gradle-plugin会完成编码的生成

apply plugin: 'com.google.protobuf'

...

protobuf {
    protoc { artifact = 'com.google.protobuf:protoc:3.12.0' }
    plugins {
        grpc { 
            artifact = 'io.grpc:protoc-gen-grpc-java:1.34.0-SNAPSHOT' // CURRENT_GRPC_VERSION
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                java { option 'lite' }
            }
            task.plugins {
                grpc { // Options added to --grpc_out
                    option 'lite' 
                }
            }
        }
    }
}

在示例中,原型文件放置在src/main/proto中,这是插件将要拾取的源原型文件的默认位置(或更正式的名称是SourceDirectorySet)。

应用protobuf-gradle-plugin会自动将gradle任务添加到生成为您生成代码的构建中。生成的代码也将由插件提供给Java编译。因此,您基本上不需要手动执行任何操作。您可以在其README中找到有关该插件如何工作的更多信息。

Android与websocket通信(Node Websocket服务器和Android Java客户端).不要在Android 4上工作

Android与websocket通信(Node Websocket服务器和Android Java客户端).不要在Android 4上工作

我试图用作 Android客户端Websocket – weberknecht,一个线程每秒向Nodejs Websocket发送一条消息(js): Node WebSocket Server

它在android 2或2.3.3上运行正常,但是当我在android 4上运行时,我在websocket.connect()上遇到错误;

你知道为什么或我做错了吗?

我的代码是:

public class MainThread extends Thread {

    private boolean is_running;
    private URI url = null;
    private de.roderick.weberknecht.WebSocket websocket = null;

    public MainThread() {
        this.is_running = false;
        try {
            url = new URI("ws://192.168.1.88:8088/");
            websocket = new WebSocketConnection(url);

            websocket.setEventHandler(new WebSocketEventHandler() {
                public void onopen(){
                    System.out.println("--open");
                }
                public void onMessage(WebSocketMessage message){
                    System.out.println("--received message: " + message.getText());
                }
                public void onClose(){
                    System.out.println("--close");
                }
            });
        } catch (WebSocketException wse) {
            wse.printstacktrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (URISyntaxException use) {
            use.printstacktrace();  //To change body of catch statement use File | Settings | File Templates.
        }

    }
    @Override
    public void run() {
        while(is_running){
            try {
                websocket.send("hello world");
                Thread.sleep(10000);
            }
            catch (WebSocketException wse) {
                wse.printstacktrace();
            } catch (InterruptedException e) {
                e.printstacktrace();  
            }

        }
    }

    public void set_running(boolean is_running) {
        if(is_running == true)
            try {
                websocket.connect();
                this.is_running = is_running;
            } catch (WebSocketException e) {
                System.out.println(e.toString());
                //e.printstacktrace();  
            }
    }
}

和我在android 4上得到的错误:

ERROR/AndroidRuntime(562): FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.biskis.test.websocket/com.biskis.test.websocket.GameActivity}: android.os.networkonmainthreadException
        at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1956)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
        at android.app.ActivityThread.access$600(ActivityThread.java:123)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.os.networkonmainthreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
        at libcore.io.IoBridge.connect(IoBridge.java:112)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
        at java.net.socket.startupSocket(Socket.java:566)
        at java.net.socket.tryAllAddresses(Socket.java:127)
        at java.net.socket.<init>(Socket.java:177)
        at java.net.socket.<init>(Socket.java:149)
        at de.roderick.weberknecht.WebSocketConnection.createSocket(WebSocketConnection.java:238)
        at de.roderick.weberknecht.WebSocketConnection.connect(WebSocketConnection.java:83)
        at com.biskis.test.websocket.MainThread.set_running(MainThread.java:76)
        at com.biskis.test.websocket.GameActivity.onCreate(GameActivity.java:20)
        at android.app.Activity.performCreate(Activity.java:4465)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
        at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920)
        ... 11 more

或者您是否知道如何以更好的方式将客户端(java,android)通信到服务器(nodejs,websocket)?

谢谢.

解决方法

不要连接到主线程上的Websocket(即在GameActivity.onCreate中),错误就会消失.您可以使用AsyncTask在后台连接到Websocket.

通过I / O操作阻止主线程(并且网络访问最终是I / O操作)将导致(在最坏的情况下)缓慢的用户界面或Android杀死您的应用程序,因为它没有及时做出反应.请参阅designing for responsiveness文档.

Android客户端与JAVAWeb服务器通讯的问题

Android客户端与JAVAWeb服务器通讯的问题

最近打算做一个比较大的项目。我负责JAVA服务器。我的另外一个朋友负责Android客户端。我只知道Android客户端与服务器通讯使用JSON字符串。

我是通过在Servlet中间页面跳转来实现Android与Servlet交互的:

String   status=JsonService.createJsonByObject("status", obj);
req.setAttribute("status", status);
req.getRequestDispatcher("/result/status.jsp").forward(req, resp);
但是这样做明显感觉不太好啊!

请问各位程序员有没有比较好的方法呢?


关于Java服务器和Android客户端之间的SSL连接失败java服务器端和客户端连接的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android socket 问题 android 客户端 与java服务器socket通信 ,当服务器突然中断后、android studio与Java服务器之间的通信问题GRPC、Android与websocket通信(Node Websocket服务器和Android Java客户端).不要在Android 4上工作、Android客户端与JAVAWeb服务器通讯的问题的相关知识,请在本站寻找。

本文标签: