troubleshoot ssl socket factory

I am converting a regular client-server sample socket program to ssl. But I don't have a clue how to find out what the problem is after the server socket creation fails.

The code samples I use sort of assume no exceptions will be thrown and does not deal with indicating what problems occur. Here's the source:

import javax.net.ssl.*;

import java.io.*;

public class KnockKnockServer {

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

SSLServerSocket serverSocket = null;

try {

SSLServerSocketFactory sslSrvFact =

(SSLServerSocketFactory) SSLServerSocketFactory.getDefault();

serverSocket = (SSLServerSocket)sslSrvFact.createServerSocket(4444);

/* serverSocket = new ServerSocket(4444); */

} catch (IOException e) {

System.err.println("Could not listen on port: 4444.");

System.exit(1);

}

SSLSocket clientSocket = null;

try {

clientSocket = (SSLSocket)serverSocket.accept();

} catch (IOException e) {

System.err.println("Accept failed.");

System.exit(1);

}

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

BufferedReader in = new BufferedReader(

new InputStreamReader(

clientSocket.getInputStream()));

String inputLine, outputLine;

KnockKnockProtocol kkp = new KnockKnockProtocol();

outputLine = kkp.processInput(null);

out.println(outputLine);

while ((inputLine = in.readLine()) != null) {

outputLine = kkp.processInput(inputLine);

out.println(outputLine);

if (outputLine.equals("Bye."))

break;

}

out.close();

in.close();

clientSocket.close();

serverSocket.close();

}

}

[1783 byte] By [matanS] at [2007-9-26 4:42:39]
# 1

it goes along with another file (which is quite trivial)

import java.net.*;

import java.io.*;

public class KnockKnockProtocol {

private static final int WAITING = 0;

private static final int SENTKNOCKKNOCK = 1;

private static final int SENTCLUE = 2;

private static final int ANOTHER = 3;

private static final int NUMJOKES = 5;

private int state = WAITING;

private int currentJoke = 0;

private String[] clues = { "Turnip", "Little Old Lady", "Atch", "Who", "Who" };

private String[] answers = { "Turnip the heat, it's cold in here!",

"I didn't know you could yodel!",

"Bless you!",

"Is there an owl in here?",

"Is there an echo in here?" };

public String processInput(String theInput) {

String theOutput = null;

if (state == WAITING) {

theOutput = "Knock! Knock!";

state = SENTKNOCKKNOCK;

} else if (state == SENTKNOCKKNOCK) {

if (theInput.equalsIgnoreCase("Who's there?")) {

theOutput = clues[currentJoke];

state = SENTCLUE;

} else {

theOutput = "You're supposed to say \"Who's there?\"! " +

"Try again. Knock! Knock!";

}

} else if (state == SENTCLUE) {

if (theInput.equalsIgnoreCase(clues[currentJoke] + " who?")) {

theOutput = answers[currentJoke] + " Want another? (y/n)";

state = ANOTHER;

} else {

theOutput = "You're supposed to say \"" +

clues[currentJoke] +

" who?\"" +

"! Try again. Knock! Knock!";

state = SENTKNOCKKNOCK;

}

} else if (state == ANOTHER) {

if (theInput.equalsIgnoreCase("y")) {

theOutput = "Knock! Knock!";

if (currentJoke == (NUMJOKES - 1))

currentJoke = 0;

else

currentJoke++;

state = SENTKNOCKKNOCK;

} else {

theOutput = "Bye.";

state = WAITING;

}

}

return theOutput;

}

}

matanS at 2007-6-29 18:06:03 > top of Java-index,Security,Java Secure Socket Extension (JSSE)...