Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何连接客户端IP';s到不同的目录_Java_Sockets_Directory_Hashmap_File Sharing - Fatal编程技术网

Java 如何连接客户端IP';s到不同的目录

Java 如何连接客户端IP';s到不同的目录,java,sockets,directory,hashmap,file-sharing,Java,Sockets,Directory,Hashmap,File Sharing,我正在创建一个文件共享程序,虽然这个程序只在本地运行,但我正在尝试将两个不同的客户端连接到两个不同的目录(这两个目录都在同一台计算机上),并显示连接到不同端口的文件(如果可能的话,还可能显示IP) 我有一些代码将文件名和IP+端口分别放在hashmap键和值中。但目前它们都连接到相同的ip和端口 当我打开两个不同的客户端时,它们有两个不同的端口。(我可以在服务器GUI中看到) case ServerConstants.CLIENT\u发布: int开关c=1; 如果(开关C==1){ File

我正在创建一个文件共享程序,虽然这个程序只在本地运行,但我正在尝试将两个不同的客户端连接到两个不同的目录(这两个目录都在同一台计算机上),并显示连接到不同端口的文件(如果可能的话,还可能显示IP)

我有一些代码将文件名和IP+端口分别放在hashmap键和值中。但目前它们都连接到相同的ip和端口

当我打开两个不同的客户端时,它们有两个不同的端口。(我可以在服务器GUI中看到)

case ServerConstants.CLIENT\u发布:
int开关c=1;
如果(开关C==1){
File client1Folder=新文件(
“C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
文件[]allFilesClient1=client1Folder.listFiles();
用于(文件名:AllFileClient1){
Index.fileDir.put(fileName.getName(),
(remoteClient.getInetAddress().toString()+“”+remoteClient.getPort());
}
c++;
}
如果(开关C==2){
File client2Folder=新文件(
“C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
文件[]allFilesClient2=client2Folder.listFiles();
对于(文件名1:AllFileClient2){
Index.fileDir.put(fileName1.getName(),
(remoteClient.getInetAddress().toString()+“”+remoteClient.getPort());
}
System.out.print(“CPub方法结束\n”);
对于(Map.Entry)mapEntry:Index.fileDir
.entrySet()){
System.out.println(mapEntry.getKey()+“| |”
+mapEntry.getValue());
}
打破
}

让我说对了,您有许多具有不同ip的客户端,并且您希望每个客户端根据其ip看到一些“文件/目录”?几乎,许多客户端,不同的ip端口,并且希望每个端口根据其端口连接到不同的目录,虽然我认为没有不同的IP,因为它是本地的。可能您不需要
if(switchC==1)
,因为在您的
case
语句中总是如此。有可能两个不同的客户机具有相同的文件名,您实际上将其用作密钥。在这种情况下,后面的条目可能会覆盖前面的条目。使用
fileName
作为密钥不是一个好主意,因为您希望密钥是唯一的。
    case ServerConstants.CLIENT_PUBLISHES:
                int switchC = 1;
                if(switchC == 1){
                File client1Folder = new File(
                        "C:\\###### #####\\##### #######\\### ######\\client1");
                File[] allFilesClient1 = client1Folder.listFiles();

                for (File fileName : allFilesClient1) {

                    Index.fileDir.put(fileName.getName(),
                            (remoteClient.getInetAddress().toString() + " " + remoteClient.getPort()));

                    }
                    switchC++;
                }
                if(switchC == 2){
                File client2Folder = new File(
                        "C:\\###### #####\\##### #######\\### ######\\client2");
                File[] allFilesClient2 = client2Folder.listFiles();

                for (File fileName1 : allFilesClient2) {

                    Index.fileDir.put(fileName1.getName(),
                            (remoteClient.getInetAddress().toString() + " " + remoteClient.getPort()));
                }
                System.out.print(" CPub Method Ended \n");

                for (Map.Entry<String, String> mapEntry : Index.fileDir
                        .entrySet()) {
                    System.out.println(mapEntry.getKey() + " || "
                            + mapEntry.getValue());
                }
                break;
                }