【发布时间】:2021-04-16 04:52:53
【问题描述】:
我正在编写一个客户端-服务器服务,我的服务器正在向客户端发送文件。
在以下示例中,我尝试将文件名列表发送给我的客户端。
服务器
serverSocket = new ServerSocket(4000);
connsock = serverSocket.accept();
objectOutput = new ObjectOutputStream(connsock.getOutputStream());
List<String> file_names = new ArrayList<String>();
File[] files = new File("C:\\ServerMusicStorage").listFiles();
for (File file : files) {
if (file.isFile()) {
file_names.add(file.getName());
}
}
objectOutput.writeObject(file_names);
objectOutput.flush();
客户
newclientSocket = new Socket("localhost", 4000);
objectInput1 = new ObjectInputStream(newclientSocket.getInputStream());
System.out.println("<---Available files--->");
// get list of files from server
Object file_names = objectInput1.readObject();
file_list = (ArrayList<String>) file_names;
int count = 1;
for (int i = 0; i < file_list.size(); i++) {
System.out.println(count + ")" + file_list.get(i));
count++;
}
所以当我在 java NetBeans IDE 上运行我的程序时,它可以按我的意愿运行。我得到了文件
<---Available files--->
1)blank.wav
2)fuark.wav
对于 docker 连接,我创建了一个网络
docker network create client_server_network
我用
运行服务器docker run --env SERVER_HOST_ENV=server --network-alias server --network client_server_network -it server
和客户一起
docker run --network client_server_network -it clientimage
虽然客户端-服务器连接通过 docker 容器成功,但当我运行这两个服务时,我没有得到任何输出。
<---Available files--->
我被困在这几天了。可能有什么问题?如果我应该提供任何其他信息,请告诉我。
附:在 docker 的服务器端,我将 server 图像设置为主机 newclientSocket = new Socket("server", 4000)
【问题讨论】:
标签: java docker sockets stream