📄 fileclient.java
字号:
package mypkg;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class FileClient extends Peer implements Runnable { private Thread exac; private Socket s; public FileClient(String ip, int port) { super(); exac = new Thread(this); try { s = new Socket(ip, port); gui.setStatusContent("The fileclient started."); } catch (IOException e) { gui.setStatusContent("Could not create FileSocket."); } } public void start() { exac.start(); } public void run() { String message = null; while (true) { switch (getStatus()) { case Utility.BEGIN_CONNECT: try { bis = new BufferedInputStream(s.getInputStream()); bos = new BufferedOutputStream(s.getOutputStream()); in = new BufferedReader(new InputStreamReader(s .getInputStream())); out = new PrintWriter(s.getOutputStream()); setStatus(Utility.CONNECTED); } catch (IOException e) { gui.setStatusContent("Could not create FilePipe."); } break; case Utility.CONNECTED: try { //firstly,to check the status is to be changed or not //if has been changed , then go out of the selection Thread.sleep(100); if(getStatus()!=Utility.CONNECTED) break; } catch (InterruptedException e1) { e1.printStackTrace(); } message = receive(); if (message != null) { if (message.equals("DISCONNECT")) { setStatus(Utility.DISCONNECTING); send(Utility.MSG, "DISCONNECT"); gui.setStatusContent("Diconnected."); } if (message.equals(Utility.RECV)) { setStatus(Utility.SENDING); } if (message.equals(Utility.REFU)) { gui.setStatusContent("Your friend refuse your attachement."); } } break; case Utility.SENDING: try {// send file thread sleep,wait receive file thread ready Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } sendFile(); setStatus(Utility.CONNECTED); gui.setStatusContent("Transfered."); break; case Utility.RECVING: recvFile(); setStatus(Utility.CONNECTED); gui.setStatusContent("Transfered."); break; case Utility.DISCONNECTING: close(); try{ s.close(); }catch(Exception e){ gui.setStatusContent("Could not close."); } gui.setStatusContent("The client disconnected."); gui.reSet(); return; } System.out.println("The client status is " + getStatus()); } } public static void main(String[] args) throws Exception { gui = new GUI(Utility.CLIENT); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -