У меня есть 2 приложения Java Spring Boot, которые я подключаю через локальный порт 81. Код в порядке, как он работает в Eclipse. Когда я использую докер, я пытаюсь выставить порты, и это терпит неудачу. Не удается подключить образы док-станции друг к другу в двух отдельных терминалах док-станции.
Код сервера:
public static void main(String[] args) {
SpringApplication.run(SpringGetApplication.class, args);
try {
final int portNumber = 81;
ServerSocket serverSocket = new ServerSocket(portNumber);
while (true) {
// SOCKET MESSAGE SENDER
// SOCKET SENDS MESSAGE THEN CLOSES
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
// PW, PRINTWRITER SENDS STRINGS TO OTHER SERVER
pw.println("Hello");
// BUFFEREDREADER READS OTHER SERVER'S MESSAGES
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// WHILE LOOP TO KEEP READING LINE WHEN THE INPUTS ARE COMING
String answer = null;
while ((answer = br.readLine()) != null) {
System.out.println(answer);
}
pw.println("I HAVE SUCCESSFULLY RECIEVED YOUR DATA");
pw.close();
br.close();
}
} catch (Exception e) { }
}
Код клиента:
public static void main(String[] args) {
SpringApplication.run(SpringGetApplication.class, args);
try {
final String host = "localhost";
final int portNumber = 81;
System.out.println("Creating server socket on port " + portNumber);
Socket socket = new Socket(host, portNumber);
// READS RESPONSE FROM THE SERVER
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// PRINTWRITER USES SOCKET OUTPUT TO SEND THE DATA OUT TO THE OTHER SERVER
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
System.out.println("server says:" + br.readLine());
String outputTextToCC = "HOWDY THERE, i'M THE CLIENT";
// OUT SENDS THE STRING TO THE OTHER SERVER
out.println(outputTextToCC);
out.println("FINISH");
// READS RESPONSE FROM OTHER SERVER
System.out.println("server says:" + br.readLine());
br.close();
socket.close();
} catch (Exception e) { }
}
Я создал образы Docker для них обоих и запускаю 2 образа на отдельных терминалах Docker.
- Терминал 1 (приложение My Server):
docker run --expose=81 contactcentre2
- Терминал 2 (приложение My Client):
docker run --expose=81 contactcentretest
Я попытался открыть порт 81, но мое клиентское приложение все еще не может подключиться к другому серверу.