网站建设的案例,沈阳建设网站服务公司,网站突然不收录2017,域名买卖题目要求#xff1a;
编写客户端程序和服务器端程序客户端可以输入一个音乐 文件名#xff0c;比如 美丽中国#xff0c;服务端 收到音乐后#xff0c;可以给客户端返回这个音乐文件#xff0c;如果服务器没有这个文件#xff0c;返回一个默认的音乐即可客户端收到文件后…题目要求
编写客户端程序和服务器端程序客户端可以输入一个音乐 文件名比如 美丽中国服务端 收到音乐后可以给客户端返回这个音乐文件如果服务器没有这个文件返回一个默认的音乐即可客户端收到文件后保存到本地E:\\提示该程序可以使用工具类StreamUtils.java
这是工具类StreamUtils.java
import java.io.ByteArrayOutputStream;
import java.io.InputStream;/*** 此类用于演示关于流的读写方法**/
public class StreamUtils {/*** 功能将输入流转换成 byte[]** param is* return* throws Exception*/public static byte[] streamToByteArray(InputStream is) throws Exception {ByteArrayOutputStream bos new ByteArrayOutputStream();//创建输出流对象byte[] b new byte[1024];int len;while ((len is.read(b)) ! -1) {bos.write(b, 0, len);}byte[] array bos.toByteArray();bos.close();return array;}
}
/*** 功能将 InputStream 转换成 String* param* return* throws Exception*/ import day28.UpLoad.StreamUtils;import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;/*** author monian* Wo yi wu ta,wei shou shu er!*/
public class DownLoadReceiver {public static void main(String[] args) throws Exception {//提示输入你要下载的文件名System.out.println(请输入需要下载的文件名);String downFileName ;Scanner sc new Scanner(System.in);downFileName sc.next();//请求到了服务器准备发送Socket socket new Socket(InetAddress.getLocalHost(),9999);//获取和Socket关联的输出流OutputStream outputStream socket.getOutputStream();//现在开始发送需要的文件名outputStream.write(downFileName.getBytes());//设置写入结束的文件标志socket.shutdownOutput();//4.读取服务器返回的文件数据字节数据InputStream inputStream socket.getInputStream();byte[] buf StreamUtils.streamToByteArray(inputStream);//5.得到一个输入流准备将bytes 写入到磁盘文件String filePath E:\\downFileName.mp3;BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(filePath));bos.write(buf);bos.close();//6.关闭相关的资源bos.close();inputStream.close();socket.close();outputStream.close();System.out.println(Client已经关闭~);}
}import day28.UpLoad.StreamUtils;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;/*** author monian* Wo yi wu ta,wei shou shu er!*/
public class DownLoadServer {public static void main(String[] args) throws Exception {ServerSocket serverSocket new ServerSocket(9999);System.out.println(服务器正在接收~);Socket socket serverSocket.accept();//3.读取客户端发送要下载的文件名//这里使用while读取文件名考虑将来客户发送的数据较大的情况InputStream inputStream socket.getInputStream();byte[] buf new byte[1024];int len0;String downloadFileName ;while ((len inputStream.read(buf))!-1){downloadFileNamenew String(buf,0,len);}System.out.println(客户端希望下载的文件名downloadFileName);//现在服务器上面有两个文件无名.mp3 高山流水.mp3//如果客户下载的是高山流水 我们就返回该文件 否则一律返回 无名.mp3String resFileName ;if(高山流水.equals(downloadFileName)){resFileName E:\\桌面\\demo\\Java\\com.hanshunping\\src\\day28\\Homework03\\高山流水.mp3;}else{resFileNameE:\\桌面\\demo\\Java\\com.hanshunping\\src\\day28\\Homework03\\musicback.mp3;}//4.创建一个输入流 读取文件BufferedInputStream bis new BufferedInputStream(new FileInputStream(resFileName));//5.使用工具类StreamUtils读取文件到一个字节数组byte[] bytes StreamUtils.streamToByteArray(bis);//6.得到Socket关联的输出流BufferedOutputStream bos new BufferedOutputStream(socket.getOutputStream());//7.写入数据通道返回给客户端bos.write(bytes);socket.shutdownOutput();//一定要关闭很关键关闭输入否则会一直等待//8.关闭相关的资源bis.close();bos.close();socket.close();serverSocket.close();System.out.println(服务端已经退出~);}
}