java - 如何进行安全套接字通信 Android 到笔记本电脑

标签 java security sockets

<分区>

Possible Duplicate:
how to do ssl socket programming

我正在使用无线路由器通过 Socket 从 android 作为客户端和笔记本电脑作为服务器进行通信。但是如果我想安全地进行通信怎么办。这是我在 eclipse 中的 android 代码

public class TCPClient implements Runnable {

    public void run() {

     try {

         InetAddress serverAddr = InetAddress.getByName("192.168.1.2");

             Log.d("TCP", "C: Connecting...");

             Socket socket = new Socket(serverAddr,12345);

             String message = "Hello from Client android emulator";
              try {

                     Log.d("TCP", "C: Sending: '" + message + "'");

                     PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);

                     out.println(message);

                     Log.d("TCP", "C: Sent.");

                 Log.d("TCP", "C: Done.");



         } catch(Exception e) {

             Log.e("TCP", "S: Error", e);
                 } finally {

                    socket.close();

                  }
     } catch (Exception e) {

          Log.e("TCP", "C: Error", e);

     }

}

}

here is server code in Netbean that is working and communicating with android. what changes i have to do ?

public class TCPDesktopServer implements Runnable{



public static final String SERVERIP = "10.0.2.15";

public static final int SERVERPORT = 12345;



public void run() {

     try {

        System.out.println("S: Connecting...");

        ServerSocket serverSocket = new ServerSocket(SERVERPORT);

         while (true) {

             Socket client = serverSocket.accept();

             System.out.println("S: Receiving...");

             try {
                  BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

                  String str = in.readLine();

                  System.out.println("S: Received: '" + str + "'");
             } catch(Exception e) {

                    System.out.println("S: Error");

                    e.printStackTrace();

             } finally {
                    client.close();
                    System.out.println("S: Done.");
                }
         }

     } catch (Exception e) {

         System.out.println("S: Error");

         e.printStackTrace();
     }
}

public static void main (String a[]) {

    Thread desktopServerThread = new Thread(new TCPDesktopServer());

    desktopServerThread.start();

}

最佳答案

似乎您需要使用 javax.crypto.CipherOutputStream/CipherInputStream,或者如果您想要更标准化的方法,您可以尝试 Apache commons (http://commons.apache.org/),其中有 SSL 的基本实现.

关于java - 如何进行安全套接字通信 Android 到笔记本电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6781923/

相关文章:

java - 在 Spring ,有没有办法 Autowiring 第一个 bean?

1=1 的 Java 正则表达式

java - 简单的Web服务认证/授权不是那么简单吗?

c# - ProtectedData.Protect 间歇性故障

c# - 是否可以通过其他应用程序使用 TrueCrypt? (C#)

java - 获取 Java 1.4 中线程的唯一标识符

php - 服务器和 SSL API 安全

c++ - 在RemoteHostClosedError之后重新连接到服务器时,QTcpSocket无法传输数据

java - 如何使用 ServerSocket 通过 TCP 找出连接到服务器的客户端数量及其 IP(详细信息)?

c - 来自一个进程的多个客户端连接