弹幕网站是什么技术做的,开封建设教育协会网站,模仿大型门户网站做ppt,北京网站建设小鱼在线第二步#xff1a;实现文件传递。 上一步只是从服务端传递了一个字符串到客户端#xff0c;这次需要对代码进行调整#xff0c;实现从服务端获取文件#xff0c;在客户端将文件存入目标地址。 调整后的代码#xff1a; 服务端#xff1a; import java.io.DataInputStream…第二步实现文件传递。 上一步只是从服务端传递了一个字符串到客户端这次需要对代码进行调整实现从服务端获取文件在客户端将文件存入目标地址。 调整后的代码 服务端 import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args){//创建服务端socket用以网络信息的接收ServerSocket serverSocket null;try {//服务端socket使用本地IP端口号使用36000serverSocket new ServerSocket(36000);//保证服务端持续运行while(true){//接收网络信息未接收到则阻塞当前线程Socket socket serverSocket.accept();//将文件信息写入socket通信writeFile(socket);//关闭socket防止客户端长时间等待socket.close();}} catch (Exception e) {e.printStackTrace();}}/*** 将文件信息写入socket通信流* param socket* socket*/private static void writeFile(Socket socket){try{//获取本地文件String filePath D:/test.pdf;//创建文件对象File file new File(filePath);//使用DataOutputStream传送文件信息DataOutputStream dos new DataOutputStream(socket.getOutputStream());//写入文件名dos.writeUTF(file.getName());//写入文件大小dos.writeLong(file.length());//清空缓冲区dos.flush();//使用DataInputStream将文件写入DataInputStream dis new DataInputStream( new FileInputStream(file) ); byte[] buffer new byte[1024];int head 0;while((headdis.read(buffer)) 0){dos.write(buffer, 0, head);}dis.close();dos.close();}catch(Exception e){e.printStackTrace();}}
} 客户端 import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.net.Socket;public class Client {public static void main(String[] args){DataInputStream input null;Socket clientSocket null;try {//创建客户端socket用以连接服务端clientSocket new Socket(127.0.0.1, 36000);//读取服务端发送的信息流input new DataInputStream(clientSocket.getInputStream());String fileName input.readUTF();long fileSize input.readLong();System.out.println(收到服务端发过来的文件文件名称为 fileName 文件大小为 fileSize);//将文件读入本地String savePath E:\\just a test.pdf;DataOutputStream fos new DataOutputStream(new FileOutputStream(savePath));byte[] buffer new byte[1024];int head 0;while((headinput.read(buffer)) 0){fos.write(buffer, 0, head);}fos.close();input.close();clientSocket.close();} catch (Exception e) {e.printStackTrace();}}
} 本次文件流的传送使用了DataOutputStream和DataInputStream使用Data类型的字节流可以根据信息类型分别进行处理。转载于:https://www.cnblogs.com/amunote/p/4138059.html