zoukankan      html  css  js  c++  java
  • 用socket方式传输Image和Sound文件

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class MediaServer {
        private static ServerSocket serverSocket;
        private static final int PORT = 12345;
    
        public static void main(String[] args) {
            System.out.println("Opening port...");
            try {
                serverSocket = new ServerSocket(PORT);
            } catch (IOException e) {
                System.out.println("Unable to attach to port!");
                System.exit(1);
            }
            do {
                try {
                    Socket connection = serverSocket.accept();
                    Scanner in = new Scanner(connection.getInputStream());
                    ObjectOutputStream out = new ObjectOutputStream(connection.getOutputStream());
                    String message = in.nextLine();
                    System.out.println(message);
                    if (message.equalsIgnoreCase("image")) {
                        sendFile("F://apple.jpg", out);
                    }
                    if (message.equalsIgnoreCase("sound")) {
                        sendFile("F://Matthew.mp3", out);
                    }
                    in.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } while (true);
        }
    
        private static void sendFile(String filePath, ObjectOutputStream out) throws Exception {
            FileInputStream fileInputStream = new FileInputStream(filePath);
            long fileLeng = new File(filePath).length();
            int length = (int) fileLeng;
            byte[] bytes = new byte[(int) length];
            fileInputStream.read(bytes);
            fileInputStream.close();
            out.writeObject(bytes);
            out.flush();
        }
    
    }
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;
    
    public class MediaClient {
        private static InetAddress host;
        private static final int PORT = 12345;
    
        public static void main(String[] args) {
            try {
                host = InetAddress.getLocalHost();
            } catch (UnknownHostException e) {
                System.out.println("Host ID not found.");
                System.exit(1);
            }
            try {
                Socket connection = new Socket(host, PORT);
                ObjectInputStream in = new ObjectInputStream(connection.getInputStream());
                PrintWriter out = new PrintWriter(connection.getOutputStream(), true);
                Scanner userIn = new Scanner(System.in);
                System.out.println("Enter request (image/sound):");
                String message = userIn.nextLine();
                while (!message.equalsIgnoreCase("image") && !message.equalsIgnoreCase("sound")) {
                    System.out.println("Try again:");
                    System.out.println("Enter request (image/sound):");
                    message = userIn.nextLine();
                }
                userIn.close();
                out.println(message);
                getFile(in, message);
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        private static void getFile(ObjectInputStream in, String message) throws Exception {
            byte[] byteArray = (byte[]) in.readObject();
            FileOutputStream outputStream;
            if (message.equalsIgnoreCase("image")) {
                outputStream = new FileOutputStream("E://apple.jpg");
            } else {
                outputStream = new FileOutputStream("E://Matthew.mp3");
            }
            outputStream.write(byteArray);
            outputStream.close();
        }
    }
  • 相关阅读:
    WorkFlow
    自己写的一个多线程的consumer 和 producter 模式
    Visual Studio进行Web性能测试
    基元线程同步——内核模式构造
    系统架构师
    《构建高性能的web站点》读书笔记缓存
    python中的代码对象
    python web框架互相融合, Pyramid或取代Django
    海量数据处理专题
    Django框架学习Forms篇
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5431089.html
Copyright © 2011-2022 走看看