J'utilise des sockets TCP/IP pour créer une application client et serveur. A l'origine j'utilisais des sockets standards mais maintenant j'ai décidé d'utiliser SSL pour ma connexion. J'ai créé un fichier de clés et j'ai essayé d'exécuter mon application, mais cela n'a pas encore réussi.Les sockets SSL Java ne fonctionnent pas
Voici mon code pour le serveur
public class ArFileServer {
public static void main(String[] args)
{
boolean listening = true;
ServerSocketFactory serversocketfactory;
ServerSocket serverSocket;
try
{
//serverSocket = new ServerSocket(4445);
serversocketfactory = SSLServerSocketFactory.getDefault();
serverSocket = serversocketfactory.createServerSocket(4445);
String keystore = System.getProperty("javax.net.ssl.trustStore");
System.out.println(keystore);
// infinite loop to continually listen for connection requests made by clients
while (listening)
{
new ClientConnection(serverSocket.accept()).start();
if (serverSocket != null)
{
System.out.println("Connection to client established");
}
}
serverSocket.close();
}
catch (IOException e)
{
System.out.println("Error could not create socket connection to port, check that port is not busy");
}
}
}
et voici le code client:
public class ClientSocket
{
SocketFactory socketfactory = null;
Socket clientSocket = null;
PrintWriter out = null;
BufferedReader in = null;
// establish a connection to All Care's server application through socket 4444 (adjust localhost to reflect the IP address that the server
// is being run from)
public ClientSocket()
{
try
{
//clientSocket = new Socket("localhost", 4445);
//SocketFactory socketfactory = SSLSocketFactory.getDefault();
clientSocket = socketfactory.createSocket("192.168.1.8", 4445);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String truststore = System.getProperty("javax.net.ssl.trustStore");
System.out.println(truststore);
}
catch (IOException e)
{
System.out.println("Could not connect to All Care Server Application : " + e.getMessage());
}
}
}
J'utilise également ces arguments d'exécution:
-Djavax.net.ssl.keyStore=C:\Users\Chris\Documents\NetBeansProjects\ArFile\keystore.jks -Djavax.net.ssl.keyStorePassword=password
Lorsque je tente pour imprimer le truststore, il retourne toujours null, qu'est-ce que je fais mal?
if (serversocket! = Null) est accessible et il imprime quand j'exécute le programme. J'ai fixé le crochet pour l'IOException maintenant pour imprimer son message, mais ce n'est pas où mon erreur est –
le problème semblerait être lié à la lecture et à l'écriture à la douille. Le client et le serveur ne peuvent pas sembler recevoir un message les uns aux autres. Peut-être que les flux d'entrée et de sortie que j'utilise ne sont pas supportés par SSL? –
@MatthewPigram 'serverSocket' ne peut jamais être nul à ce point dans le programme. Vous avez déjà exécuté 'serverSocket.accept()'. – EJP