gpt4 book ai didi

java - 数据未使用 SSL 在客户端和服务器之间传输

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:26 24 4
gpt4 key购买 nike

这是我的服务器代码

import java.io.InputStream;

import java.io.OutputStream;
import java.security.Key;

import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;

public class SSLServer {
final static String pathToStores = "C:/Users/Amee";
final static String keyStoreFile = "server.jks";
final static String passwd = "changeit";

final static int theServerPort = 8443;

static boolean debug = false;

public static void main(String args[]) throws Exception {

String trustFilename = pathToStores + "/" + keyStoreFile;
// System.out.println("Verifying KeyStore File of Client..");

System.setProperty("javax.net.ssl.keyStore", trustFilename);
System.setProperty("javax.net.ssl.keyStorePassword", passwd);
if (debug)
System.setProperty("javax.net.debug", "all");
System.out.println("Setting up SSL parameters");

// Initialize socket connection
SSLServerSocketFactory sslssf = (SSLServerSocketFactory) SSLServerSocketFactory
.getDefault();
SSLServerSocket sslServerSocket = (SSLServerSocket) sslssf
.createServerSocket(theServerPort);
System.out.println("Server Started..Waiting for clients");
//sslServerSocket.setNeedClientAuth(true);

SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
// sslSocket.startHandshake();
System.out.println("Client Connected!");

InputStream sslIS = sslSocket.getInputStream();

OutputStream sslOS = sslSocket.getOutputStream();

final int RSAKeySize = 1024;
final String newline = "\n";

Key pubKey = null;
Key privKey = null;
boolean flag = sslSocket.getNeedClientAuth();
System.out.println("Flag value: " + flag);

String messgae = "Hello Client!";
sslOS.write(messgae.getBytes());
// sslOS.close();
}

============================================= ==================

这是我的客户端代码

=============================================

import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;

public class SSLClient{
final static String pathToStores = "C:/Users/Amee";
final static String trustStoreFile = "client.jks";
final static String passwd = "changeit";
final static String theServerName = "localhost";
final static int theServerPort = 8443;

static boolean debug = false;

public static void main(String args[]) throws Exception {

String trustFilename = pathToStores + "/" + trustStoreFile;
System.out.println("Validating KeyStore file of Server..");

System.setProperty("javax.net.ssl.trustStore", trustFilename);
System.setProperty("javax.net.ssl.trustStorePassword", passwd);
if (debug)
System.setProperty("javax.net.debug", "all");


SSLSocketFactory sslssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslSocket = (SSLSocket)sslssf.createSocket(theServerName, 8443);
System.out.println("Connected to Server!");

while (true) {

if (sslSocket.getInputStream().available() > 0) {
byte[] data = new byte[sslSocket.getInputStream().available()];
sslSocket.getInputStream().read(data);
System.out.println(new String(data));
}
}
}

============================================= =================

给出一些建议...我怎样才能通过 channel 传输数据?

最佳答案

Javadoc 中特别警告您使用 available() 的方式。使用固定大小的缓冲区,并阻塞在 read() 方法中。

关于java - 数据未使用 SSL 在客户端和服务器之间传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com