java read file from network device

前端 未结 3 635
野趣味
野趣味 2020-11-29 10:28

Can someone help me to find a tutorial or sample java code to

read a file from any machine which is in the same network

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-29 11:02


    This is not that simple! To use Server Client Aplications you need a Network API.
    I have 1 by DeBukkit and an extended version. If you would to send Files I will suggest my one (Server Client Extended .jar) becazse there is an Option to send Files (FilePacket.java).
    This are the links to the libs: All Libs


    Code for Server for Client Server Extended:

    public class TestServer extends Server {
    
        public TestServer() {
            super(29898, true, true,true);
            registerMethod("bt", new FileReciver() {
    
                @Override
                public void onCompleteRecive(FileInfo data) {
                    System.out.println("Completely recived : "+data);
                    Path p = Paths.get(data.getName());
                    try {
                        Files.createFile(p);
                        Files.write(p, data.getContent());
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                 /**
                 * @see com.bebukkit.niton.network.packets.buffer.BufferedPacketReciver#run(com.bebukkit.niton.network.packets.Packet, java.net.Socket)
                 */
                @Override
                public void run(Packet msg, Socket socket) {
                    super.run(msg, socket);
                    sendMessage(new Packet("", null), socket);
                }
            });
        }
    
        @Override
        public void preStart() 
        {
            registerMethod("msg", new ReciveMethod() {
    
                @Override
                public void run(Packet msg, Socket socket) {
                    broadcastMessage(msg);
                }
            });
        }
    
        @Override
        public void onWrongDataPacketException(ClassNotFoundException e) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onReceivePacketError(IOException e) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onPacketReckognized(ServerSocket socket) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onPacketSendException(Exception e, Packet message, Socket socket2) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onSendPacketToNotConnectedClient(Packet message, Socket socket2) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onBrodcast(Packet pack) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onServerStartError(IOException e) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onServerStop() {
            // TODO Auto-generated method stub
    
        }
    
    }
    

    Code for Client:

    package com.bebukkit.niton.network.test;
    
    import java.io.IOException;
    import java.io.Serializable;
    import java.net.Socket;
    import java.util.Scanner;
    
    import com.bebukkit.niton.network.Client;
    import com.bebukkit.niton.network.packets.Packet;
    import com.bebukkit.niton.network.packets.ReciveMethod;
    
    public class TestClient extends Client {
    
        public TestClient() {
            super("localhost", 29898, 5000, false,true);
            registerMethod("msg", new ReciveMethod() {
    
                @Override
                public void run(Packet msg, Socket socket) {
                    System.out.println(msg.getData());
                }
            });
            registerMethod("replay", new ReciveMethod() {
    
                @Override
                public void run(Packet msg, Socket socket) {
                    System.out.println("REREplay");
                }
            });
        }
    
        @Override
        public void onSocketClosingFail() {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onLoginPacketSendingFailed(IOException ex) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onConnectionError(IOException ex) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onMessageReciveError(Exception ex) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onPacketSendError(Exception ex, Packet pack) {
            // TODO Auto-generated method stub
    
        }
        @Override
        public void start() {
            super.start();
        }
    
    }
    


    You need a seperated Server + Client Starter:

    package com.bebukkit.niton.network.test;
    
    public class ServerStarter {
    
        public static void main(String[] args) {
            new TestServer();
        }
    
    }
    

    Client:

    package com.bebukkit.niton.network.test;
    
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    
    import javax.swing.JFileChooser;
    
    import com.bebukkit.niton.network.packets.Packet;
    import com.bebukkit.niton.network.packets.buffer.BufferedPacket;
    import com.bebukkit.niton.network.packets.file.FileInfo;
    import com.bebukkit.niton.network.packets.file.FilePacket;
    
    public class ClientStarter {
    
        public static void main(String[] args) throws IOException {
            TestClient tc = new TestClient();
            tc.start();
    
            new Thread(new Runnable() {
    
                @Override   
                public void run() {
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    JFileChooser c = new JFileChooser("Choose a file to upload");
                    c.setFileSelectionMode(JFileChooser.FILES_ONLY);
                    c.showDialog(null,"Upload");
                    File f = c.getSelectedFile();
                    try {
                        tc.sendMessage(new FilePacket("file", f));
                        tc.sendMessage(new Packet("replay","test"));
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }).start();
    
        }
    
    }
    

提交回复
热议问题