【发布时间】:2021-01-08 13:16:03
【问题描述】:
我有 2 个 java 文件 Server.java 和 Client.java。两者都在不同的容器中。
DOCKER 文件:我用于服务器的 dockerfile(在名为“Server”的文件夹中)是:
FROM java:8
COPY Server.java /
RUN javac Server.java
EXPOSE 25000
ENTRYPOINT ["java"]
CMD ["Server"]
客户端的dockerfile(在名为'Client'的文件夹中)是:
FROM java:8
COPY Client.java /
RUN javac Client.java
EXPOSE 25000
ENTRYPOINT ["java"]
CMD ["Client"]
构建我使用的容器
docker build . (for the client Dockerfile)
docker build . (for the server Dockerfile)
对于我使用的网络设置
docker network create client_server_network
docker run --network-alias server --network client_server_network -it serverimage
docker run --network client_server_network -it clientimage
我在运行客户端映像时遇到的错误是
java.net.ConnectException: Connection refused (Connection refused)
客户端.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("192.168.2.5", 25000);
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server");
dout.flush();
dout.close();
s.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
服务器.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(25000);
Socket s = ss.accept();// establishes connection
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = (String) dis.readUTF();
System.out.println("message= " + str);
ss.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
我做错了什么?
【问题讨论】:
标签: java docker sockets networking