📄 peer.java
字号:
package mypkg;import java.io.*;public class Peer extends AbstPeer { protected FileInputStream fis; protected FileOutputStream fos; protected BufferedInputStream bis; protected BufferedOutputStream bos; protected PrintWriter out; protected BufferedReader in; protected static GUI gui; private int status = Utility.BEGIN_CONNECT; private int buffSize = 4096; private long fileSize = 0L; protected void send(int type, String message) { out.print(Utility.addHead(type, message) + "\n"); out.flush(); System.out.println("Peer has sent the message: "+ Utility.addHead(type, message));/* gui.setStatusContent("Asking opposite peer to reply."); */ } protected void sendFile() { File file = new File(gui.getFromFilePath()); long size = file.length(); long completeSize = 0L; float result = 0; long len = 0L; try { fis = new FileInputStream(file); byte[] buff = new byte[buffSize]; while (completeSize < size&&len!=-1) { len = fis.read(buff); bos.write(buff); bos.flush(); completeSize += len; result = new Long(completeSize).floatValue()/ new Long(size).floatValue() * 100F; gui.setStatusContent("Transfering... " + result + "%"); } bos.flush(); fis.close(); } catch (FileNotFoundException e) { System.out.println("Could not found the file."); gui.setStatusContent("Could not found the file."); } catch (IOException e) { System.out.println("File transfer error."); gui.setStatusContent("File transfer error."); } } protected String receive() { String str = null; Message msg = null; try { str = in.readLine(); msg = Utility.parseMessage(str); if (msg.getType() == Utility.QRY) { gui.openDialog(msg.getBody().get(0).toString()); fileSize = new Long(msg.getBody().get(1).toString()).longValue(); } if (msg.getType() == Utility.RPY) { sendFile(); } System.out.println("Peer has received the message: " + msg.getBody()); } catch (IOException e) { gui.setStatusContent("Could not receive the message."); } return msg.getBody().get(0).toString(); } protected void recvFile() { long completeSize = 0L; float result = 0; long len = 0L; File file = new File(gui.getSaveFilePath()); try { fos = new FileOutputStream(file); byte[] buff = new byte[buffSize]; while (completeSize < fileSize&&len!=-1) { try { Thread.sleep(15); } catch (InterruptedException e) { e.printStackTrace(); } len = bis.read(buff); fos.write(buff); fos.flush(); completeSize += len; result = new Long(completeSize).floatValue()/ new Long(fileSize).floatValue() * 100F; gui.setStatusContent("Transfering... " + result + "%"); } fos.close(); } catch (FileNotFoundException e) { System.out.println("Could not found the file."); gui.setStatusContent("Could not found the file."); } catch (IOException e) { System.out.println("File transfer error."); gui.setStatusContent("File transfer error."); } } protected void close(){ try{ if(fis!=null) fis.close(); if(fos!=null) fos.close(); if(bis!=null) {bis.close();} if(bos!=null) {bos.flush();bos.close();} if(out!=null) {out.flush();out.close();} if(in!=null) in.close(); }catch(IOException e){ gui.setStatusContent("Could not close."); } } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -