我使用TCP/IP套接字来创建一个客户端和服务器的一个应用。最初我使用普通套接字,但现在我决定使用SSL进行连接。我创建了一个密钥库,并尝试运行我的应用程序,但它尚未成功。Java的SSL套接字不工作
这里是我的服务器
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");
}
}
}
代码,这里是客户端代码:
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());
}
}
}
我还利用这些运行参数:
-Djavax.net.ssl.keyStore=C:\Users\Chris\Documents\NetBeansProjects\ArFile\keystore.jks -Djavax.net.ssl.keyStorePassword=password
当我尝试打印出它总是返回null的信任库,我做错了什么?
的,如果(ServerSocket的!= NULL)可达,它的打印,当我运行程序。我已经修复了IOException异常现在打印它的消息,但那不是我的错误是 – 2012-08-03 06:11:32
这个问题似乎与读取和写入套接字有关。客户端和服务器似乎无法互相传递信息。也许我正在使用的输入和输出流不支持SSL? – 2012-08-03 06:17:10
@MatthewPigram'serverSocket'在程序中的那一点永远不能为空。你已经执行了'serverSocket.accept()'。 – EJP 2012-08-03 06:37:15