带有java套接字的docker:无法识别数据流

rbpvctlc  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(256)

我正在编写一个客户机-服务器服务,其中我的服务器正在向客户机发送文件。
在下面的示例中,我尝试将文件名列表发送给我的客户机。
服务器

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++;
}

因此,当我在javanetbeanside上运行我的程序时,它可以按我所希望的那样工作。我拿到文件了

<---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--->

我被困在这里好几天了。有什么问题吗?如果我需要提供任何其他信息,请告诉我。
p、 在docker的服务器端,我将服务器映像设置为主机 newclientSocket = new Socket("server", 4000)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题